作者:hacker发布时间:2023-03-11分类:网络黑客浏览:100评论:5
取包含 '卷期号' 三个字的节点 //ul[@id='side-menu']/li/a[contains(text(),"卷期号")]
取其内容 //ul[@id='side-menu']/li/a[contains(text(), '卷期号')]/text()
通过文本内容精准定位元素。可能由于页面内容有空格,经常定位不到元素
driver.find_element_by_xpath(‘//div[text()="活动服务"]‘) # 若要定位其它标签元素(如:td,span等),只需要替换div即可
driver.find_element_by_xpath(‘//div[contains(text(),"活动服务")]‘)
1.如果元素text是唯一的,可以通过text文本定位
//*[@text=’text文本属性’]
# 定位text
driver.find_element_by_xpath("//*[@text='扫一扫']").click()
2.如果元素id是唯一的,也可以id属性定位
//*[@resource-id=’id属性’]
# 定位 resource-id
driver.find_element_by_xpath("//*[@resource-id='com.taobao.taobao:id/tv_scan_text']").click()
同样可以联合上面两种方式定位,如下
# 也可以联合@resource-id属性和@text文本属性来下定位
driver.find_element_by_xpth("//*[@resource-id='com.taobao.taobao:id/tv_scan_text'][@text='扫一扫']").click()
3.class属性唯一的话,同样可以通过class属性定位,有两种方法
第一种: //class属性
# 定位搜索框 //class属性
driver.find_element_by_xpath("//android.widget.EditText").click()
第二种: //*[@class=’class属性’]
# 定位搜索框 //*[@class='a83f-6d84-7d76-92ae class属性']
driver.find_element_by_xpath("//*[@class='6d84-7d76-92ae-0b7a android.widget.EditText']").click()
4.通过content-desc属性定位
//*[@content-desc=’desc的文本’]
复制代码
#点登录/注册
driver.find_element_by_xpath("//*[@text='注册/登录']").click()
time.sleep(3)
#content-desc定位
driver.find_element_by_xpath("//*[@content-desc='帮助']").click()
复制代码
contains模糊定位
1)、contains是模糊匹配的定位方法,对于一个元素的id或者text不是固定的,但有一部分是固定的,这种就可以模糊匹配。
1、Xpath也可以使用元素的属性值来定位,以百度输入框和搜索按钮为例
2、通过id属性值来定位:注释://表示在当前页面的某个目录下,input表示定位元素的标签名,[@id='kw'],表示这个元素的id属性值等于kw
3、通过name和class属性值来定位:如果不想指定标签名,则也可以用*代替,当然,使用Xpath不局限于id,name和class这三个属性值,元素的任意属性值都可以使用,只要它是唯一的标识元素
4、层级与属性结合。如果一个元素本身没有可以唯一标识这个元素的属性值,那么我们可以找到其上一级元素,如果它的上一级有唯一可以标识属性的值,也可以拿来使用
5、使用逻辑运算符。如果一个属性不能唯一地区分一个元素,我们还可以使用逻辑运算符连接多个属性来查找元素。例如,假如要查找第一行元素,则:
已有5位网友发表了看法:
访客 评论于 2023-03-11 13:43:59 回复
XPath匹配含有指定文本的标签---contains的用法取包含 '卷期号' 三个字的节点 //ul[@id='side-menu']/li/a[contains(text(),"卷期号")] 取其内容 //ul[@id='side-menu']/li/a[contains(text(
访客 评论于 2023-03-11 19:03:33 回复
element_by_xpath("//*[@resource-id='com.taobao.taobao:id/tv_scan_text']").click() 同样可以联合上面两种方式定位,如下# 也可以联合@resource-id属性和@tex
访客 评论于 2023-03-11 13:23:54 回复
以使用,只要它是唯一的标识元素4、层级与属性结合。如果一个元素本身没有可以唯一标识这个元素的属性值,那么我们可以找到其上一级元素,如果它的上一级有唯一可以标识属性的值,也可以拿来使用5、使用逻辑运算符。如果一个属性不能唯一地区分一个元素,我们还可以使用逻辑运算符连接多个属性来查找元素。例如,假如要
访客 评论于 2023-03-11 15:57:24 回复
假如要查找第一行元素,则:
访客 评论于 2023-03-11 16:01:21 回复
XPath匹配含有指定文本的标签---contains的用法取包含 '卷期号' 三个字的节点 //ul[@id='side-menu']/li/a[contains(text(),"卷期号")]