作者:hacker发布时间:2022-07-17分类:黑客教程浏览:84评论:4
如果是这种情况,就考虑其他的定位方法了,肯定有一种能够解决的。
有这几种方法,也可以用:
一、
如果xpath一样,id不一样的话,可以通过找id(viewer当中的resource-id),
self.driver.find_element_by_id("com.chanjet.csp.customer:id/workrecord_add_content").send_keys(contextfield)
二、
如果一定要用xpath,看看viewer当中@index是不是有一个是0,有一个是1,一般来说不会重;如果真的重了,通过text可者其他的不一致的项,再试试
self.driver.find_element_by_xpath("//android.widget.TextView[contains(@text,'报价')]")
除了这些,还有以下的找元素的方式,换一换,总有一个能行的
self.driver.find_element_by_class_name('android.widget.ImageView').click()
self.driver.find_element_by_name("新增工作记录").click()
1、Xpath也可以使用元素的属性值来定位,以百度输入框和搜索按钮为例
2、通过id属性值来定位:注释://表示在当前页面的某个目录下,input表示定位元素的标签名,[@id='kw'],表示这个元素的id属性值等于kw
3、通过name和class属性值来定位:如果不想指定标签名,则也可以用*代替,当然,使用Xpath不局限于id,name和class这三个属性值,元素的任意属性值都可以使用,只要它是唯一的标识元素
4、层级与属性结合。如果一个元素本身没有可以唯一标识这个元素的属性值,那么我们可以找到其上一级元素,如果它的上一级有唯一可以标识属性的值,也可以拿来使用
5、使用逻辑运算符。如果一个属性不能唯一地区分一个元素,我们还可以使用逻辑运算符连接多个属性来查找元素。例如,假如要查找第一行元素,则:
试试这方式定位
driver.findElements(By.xpath("//div[starts-with(@id,'view_')]/div[2]/span/a[1]/span"));
标签:xpathid定位
已有4位网友发表了看法:
访客 评论于 2022-07-18 02:34:02 回复
div[starts-with(@id,'view_')]/div[2]/span/a[1]/span"));
访客 评论于 2022-07-18 01:08:11 回复
素的任意属性值都可以使用,只要它是唯一的标识元素4、层级与属性结合。如果一个元素本身没有可以唯一标识这个元素的属性值,那么我们可以找到其上一级元素,如果它的上一级有唯一可以标识属性的值,也可以拿来使用5、使用逻辑运算符。
访客 评论于 2022-07-17 22:13:49 回复
局限于id,name和class这三个属性值,元素的任意属性值都可以使用,只要它是唯一的标识元素4、层级与属性结合。如果一个元素本身没有可以唯一标识这个元素的属性值,那么我们可以找到其上一级元素,如果它的上一级有唯
访客 评论于 2022-07-17 22:07:20 回复
属性不能唯一地区分一个元素,我们还可以使用逻辑运算符连接多个属性来查找元素。例如,假如要查找第一行元素,则:xpath 如何定位div下的a标签 xpath定位的id是动态的试试这方式定位driver.findElements(By.xpath("//div[starts-with(