Appium 使用 Inspector 查看元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Appium 使用 Inspector 查看元素相关的知识,希望对你有一定的参考价值。
参考技术A我们之前一直都是使用 UI Automator Viewer 来查看选择元素的,如果你们愿意的话还可以用 Appium desktop 里面自带的一个查看元素的工具叫 Inspector 。打开这个查看元素工具首先要确保 Appium Server 要运行起来。然后点击这个按钮。
点击之后,打开是这个页面。
这个工具也可以用来查看界面,但是它查看界面有点麻烦的地方是什么呢?需要我们手动创建一个 session ,其实也就是一个客户端,和 appium server 连接。需要在 Desired Capabilities 里面填入一些参数。其实就是设定这些信息。
把这些填写进去:
填写之后,我们可以点击 Save as... 保存一下方便下次使用。
保存之后可以去 Saved Capability Sets (1) 里面查看。
选择我们保存的信息,然后点击 StartSession 。
这里就启动起来了。
比如我们想查看 发现 ,我们就点它。
这两种元素各有优缺点, Inspector 感觉没有 UI Automator Viewer 稳定,界面也没有 UI Automator Viewer 清晰,第一次用的时候比较麻烦需要填写参数。总体上还不错。 如果我们手机切换了界面,比如进入了 我的 界面可以点击
刷新按钮刷新,有的人会说这个跟 UI Automator Viewer 一样吗,其实它还有一个模式的选择,假如说你选择了 Tap By Coordinates 模式。
这个时候你就不需要在手机上点了,直接在界面上点,就进入到了一个操作的模式,这个时候再去操作某个元素,就不用在手机上点了,这个时候界面就会自动刷新了。这是它一个优点,它还有一个优点就是元素的 id 就是 resource-id 它直接标注在树上。
这样有什么好处?我们找元素的时候我们经常要干的事情是什么?就是如果这个元素本身没有 id 或者他的 id 重复,那我就找上层节点有没有 id 的,上层节点有没有 id 在原来的 UI Automator Viewer 找的时候比较麻烦,需要一层层往上找,一个个点一个个的去看。 inspector 特别好的地方是, 如果元素有 id , 直接就在树的节点里面添加了,不用一个个点过去看。它还有一个最大的好处是什么呢?比如这个 id 怎么判断有没有重复呢,在 UI Automator Viewer 没什么特别好的方法,需要导出来。但是在 inspector 里面就有这个好处,它可以把你 id 的表达式拿来判断,举个例子,我们点击 发现 发现它是有 id 的。
因为现在我们也不知道它是不是唯一的,先把它拷贝下来。然后点击 Search for element 按钮。
只后弹出这个窗口,我们是根据 id 去找所以 Locator Strategy: 选择 id ,然后输入拷贝的内容之后点击 Search 。
就会发现这里面有 6 个同样的 id 。所以就不是唯一的。
同样的也可以根据 XPath 去找。自己可以试一下这样可以节省不少的时间。
Mac环境下使用Appium Inspector进行元素定位
一、摘要
本篇博文介绍在Mac系统上使用AppiumI Inspector进行App页面元素定位
二、Finding elements by xpath
WebElement digit_9 = driver.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.support.v4.view.viewPager[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.Button[3]"));
三、Finding elements by name
WebElement editBox = driver.findElement(By.name("IntegerB"));
四、Finding elements by IosUIAutomation
findElements(By.IosUIAutomation(String IosUIAuto));
这个方法会返回一个元素的数组,我们需要通过索引定位到唯一的元素,例如
WebElement editBox = driver.findElements(By.IosUIAutomation(".elements()[0]"));
WebElement editBox = driver.findElements(By.IosUIAutomation(".textFields()[0]"));
以上是关于Appium 使用 Inspector 查看元素的主要内容,如果未能解决你的问题,请参考以下文章
Mac环境下使用Appium Inspector进行元素定位