RobotFramework自动化学习笔记01-利用xpath定位元素

在rf中,利用selinum2的关键字进行用例编写时,很多关键字的参数是html元素的定位标识。

最简单的方式,是通过id 或name来描述元素定位信息,如

click  button    id=loginBtn  //表示点击id值为loginBtn的按钮元素

利用id和name来定位元素,前提是要求元素设置了idname属性,并且是唯一的。但实际的web页面中,很多元素是没有id或name的,这时可通过html元素在页面中的路径来判断。

我们拿找人这个来比喻,利用id就好比通过身份证号(因为身份证号是唯一的)来找人。利用路径就好比用地址来找人,比如某个人的地址是xxxxxxxxxx号。

Xpath 就是这个意思,它通过提供元素在html文件中的层级位置来定位元素。

通过xpath定位元素,又有两种方式,一是绝对定位,也就是说从根元素html节点开始。还有一种是相对定位,就是从已知的某个上层节点往下定位。相对定位,就好比,我已经定在xx省下的xx市找人,这样我就不用关心省和市了。

下面我们一一来解释。

(一)绝对定位

例子如:

click element    xpath=/html/body/div[1]/div[1]/form[1]/label[4]

元素后面跟 [数字] 的含义是:因为一个节点下可能有多个相同标签的元素,这里的[]中的数字表示取第几个元素(1代表第1个元素)。比如第一个div[1]表示取body下的第一个div元素,而最后的label[4]表示它所在的form元素下有多个label元素,这里取第4个label元素。如果不加[]和序号,表示是第一个元素。

(二) 相对定位

绝对定位的方式比较啰嗦和麻烦,而且一旦元素的层级关系发生变化(这是经常发生的事),其定位描述也跟着变,这会更用例编写带来巨大的维护工作量。

在实际应用中,一般采用相对定位的方式,比如先定位到某个上层节点,在按照xptah的方式找它的下层节点。比如上面的例子,如果form[1]可以唯一定位。则就可以这样描述xpth。

xpath=//form[@id='f204']/label[4]

最前面的//表示采用相对定位。  form后面的[]内的 @id='f204' 表示通过id 属性值来确定form标签。后面的label[4]是通过序号来确定form内的label标签。

xpath=//form[@id='f204']/*/input[@name=xx]

在xptah表达式中*表示任意元素。上面的意思,表示定位该form下任意第三层节点(孙子节点)下的name值为xx的标签为input的元素。

 

说明:xptah有详细的规范,上面的只是最简单的应用方式,通过xptah提供的各种描述方式,非常强大,可以满足绝大部分定位的需求。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XPath是一种XML文档的定位方法,也可以用于HTML文档的定位,Selenium也可以使用XPath定位网页元素。下面是使用XPath定位元素的详细步骤: 1. 打开浏览器并访问网页: ```python from selenium import webdriver driver = webdriver.Chrome() driver.get("http://www.example.com") ``` 2. 使用XPath定位元素: ```python # 通过元素id定位 element = driver.find_element_by_xpath('//*[@id="element_id"]') # 通过元素name定位 element = driver.find_element_by_xpath('//*[@name="element_name"]') # 通过元素class定位 element = driver.find_element_by_xpath('//*[@class="element_class"]') # 通过元素标签名定位 element = driver.find_element_by_xpath('//tag_name') # 通过元素属性定位 element = driver.find_element_by_xpath('//*[@attribute_name="attribute_value"]') # 通过元素文本内容定位 element = driver.find_element_by_xpath('//*[text()="text_content"]') # 通过元素部分文本内容定位 element = driver.find_element_by_xpath('//*[contains(text(), "text_content")]') ``` 3. 对元素进行操作: ```python # 输入文本 element.send_keys("text_input") # 点击元素 element.click() # 获取元素文本 print(element.text) # 获取元素属性值 print(element.get_attribute("attribute_name")) ``` 注意事项: - XPath定位需要用到浏览器的开发者工具,在开发者工具可以查看元素XPath路径。 - XPath路径的引号需要用不同类型的引号包裹,例如在单引号内使用双引号包裹。 - 如果XPath路径包含斜杠(/),则需要使用双斜杠(//)或者使用单引号包裹整个XPath路径。 - 在XPath路径没有找到元素时,会抛出NoSuchElementException异常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值