美文网首页工作生活
Appium Xpath 选择元素

Appium Xpath 选择元素

作者: 自如_ | 来源:发表于2019-07-04 14:00 被阅读0次

大家还记得我们做 web 自动化的时候,最灵活的定位方式就是 cssxpath 了。我们也经常用它来选择一些比较难定位的元素。比如没有 id,没有唯一的 name 属性,甚至几乎没有什么属性。因此 cssxpath 可以根据和上层节点的相对位置来定位。在 Appium 中,不支持 css 选择元素,但是 Appium 支持 xpath 来定位元素,所以对于一些比较复杂复杂的元素(什么叫复杂的元素呢?上面的方法都没法定位,根据 id、classname、accessbilityid 都不行的时候),我们可以用它,写法如下

driver.find_element_by_xpath('//ele1/ele2[@attr="a1"]')

表达式的语法规则和以前学习的 Selenium 里面一样的。大家要特别注意的是,以前我们做 web 自动化的时候,xpath 中每个节点名是 htmltagname,但是在 appium 中,每个节点名对应的是 class 属性的内容。我们来看一个例子,运行开发者头条,我们点击下面的发现按钮:

image.png

我们找到其上层节点有个 resource-id=io.manong.developerdaily:id/tab_bar,由于发现对应是对应其上层节点的第三个 android.widget.TextView 元素,可以这样选择该节点:

xpath = "//*[@resource-id='io.manong.developerdaily:id/tab_bar']//android.widget.TextView"
eles = driver.find_elements_by_xpath(xpath)
print(eles[2].text)

上面这种是把所有的 android.widget.TextView 找出来,然后再找其中的第二个节点,这样也行,但是多选择了一些,我们能不能直接精准的找到第二个呢,看下面的方法:

xpath = "//*[@resource-id='io.manong.developerdaily:id/tab_bar']//*[@text='发现']"
ele = driver.find_element_by_xpath(xpath)
print(ele.text)

也可以这个样子,也可以找到,方法有很多

xpath = "//*[@resource-id='io.manong.developerdaily:id/tab_bar']//android.widget.RelativeLayout[4]//android.widget.TextView"
ele = driver.find_element_by_xpath(xpath)
ele.click()

相关文章

网友评论

    本文标题:Appium Xpath 选择元素

    本文链接:https://www.haomeiwen.com/subject/yqfqhctx.html