我们之前一直都是使用 UI Automator Viewer 来查看选择元素的,如果你们愿意的话还可以用 Appium desktop 里面自带的一个查看元素的工具叫 Inspector 。打开这个查看元素工具首先要确保 Appium Server 要运行起来。然后点击这个按钮。
点击之后,打开是这个页面。
这个工具也可以用来查看界面,但是它查看界面有点麻烦的地方是什么呢?需要我们手动创建一个 session,其实也就是一个客户端,和 appium server 连接。需要在Desired Capabilities 里面填入一些参数。其实就是设定这些信息。
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '7'
desired_caps['deviceName'] = 'test'
# desired_caps['app'] = r'd:\apk\toutiao.apk'
desired_caps['appPackage'] = 'io.manong.developerdaily'
desired_caps['appActivity'] = 'io.toutiao.android.ui.activity.LaunchActivity'
# desired_caps['unicodeKeyboard'] = True
desired_caps['noReset'] = True
desired_caps['newCommandTimeout'] = 6000
把这些填写进去:
填写之后,我们可以点击 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 去找。自己可以试一下这样可以节省不少的时间。