移动端ui自动化测试-获取Android/iOS设备元素 Dear 丶 2024-05-08 06:50 19阅读 0赞 在移动端UI自动化测试过程中,需要对设备上的元素进行定位,获取元素进行点击或者校验操作,在此记录三个获取元素的方法/工具,分别是UIAutomatorViewer、appium inspector,以及在代码中打印页面元素。 ## 一、UIAutomatorViewer ## UIAutomatorViewer是Android SDK中的一个工具 位于android sdk目录下,/tools/bin/ ![42e952e742574cee9f53b2edf1be0124.png][] 打开后 ![8fd87f6f693b415ab49384af0aa8c9cf.png][] 左上角工具栏的四个按钮,功能分别为:打开已保存的界面快照和布局;抓取手机当前屏幕截图;带有压缩层次结构的设备屏幕截图;保存当前屏幕界面的截图和布局。 ![2c982185ce1045deb64b1cebd7d9578c.png][] 第二按钮与第三按钮的区别在于: 第二按钮把全部布局呈现出来,而第三按钮只呈现有用的控件布局。 比如存在一个Frame,但只有装饰功能,那么点击第三按钮时,可能不被呈现。 打开UIAutomatorViewer工具后,手机用数据线连接电脑,操作到需要截图的页面,点击第二个按钮截图即可。 ![a2c0c106feb34733b71934aecc21b317.png][] 点击左侧需要查看的控件,即可在右侧看到控件对应的详细信息。 #### uiautomatorviewer常见问题 #### 界面按钮点击无反应,不能抓取手机屏幕 可以参考以下方案解决: 1.open ~/Library/Android/sdk/tools/lib/x86\_64 打开x86\_64文件夹,将其中的 swt.jar 重命名为 swt2.jar; 在这个链接中下载swt.jar 文件:https://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops4/R-4.19-202103031800/swt-4.19-cocoa-macosx-x86\_64.zip 将下载的swt文件中的swt.jar copy到 /Library/Android/sdk/tools/lib/x86\_64 这个文件夹下,并将swt.jar文件重命名为swt3.jar 然后再次打开uiautomatorviewer 2.可以尝试拔了数据线重新插上; 3.可以关闭和重启adb服务。 执行命令如下: adb kill-serveradb start-server ## 二、appium inspector ## appium desktop自带appium inspector,并且,不同于UIAutomatorViewer只能获取安卓设备的元素,appium inspector可以获取安卓和iOS设备的元素。 启动appium之后,点击右上角的?,打开appium inspector ![b7fee2aa35c44e7e891165c99f3b8352.png][] ![c973458c2ce04f60b51f09cb54113c2a.png][] 布局1是Appium Inspector服务的设置。 Automatic Server :自动服务器。 Custom Server :定制服务器。 Select Cloud Providers :选择云提供商。 我们一般使用Automatic Server即可: Will use currently-running Appium Desktop server 将使用当前运行的Appium桌面服务器。 布局2是高级设置。 可以设置: Allow Unauthorized Certificates:允许未经授权的证书。 Use Proxy:使用代理服务器。 初学一般我们不进行高级设置。 布局3是Desired Capabilities参数设置。 Desired Capabilities: 编写Desired Capabilities参数。 Saved Capability Sets:已保存的Desired Capabilities,可以进行查看和修改。 Attach to Session...:附加到会话... 添加Desired Capabilities参数时,可以在左侧一行一行手动添加,也可以将编辑好的json格式数据直接粘贴在右侧。 点击start session,获取手机界面。 ![c062b861b29f437bbcbf02cfd00789a5.png][] 布局1:截图的手机界面 可以点击选择元素。 布局2:顶部操作栏 从左往右的按钮依次是 Select Element:选择元素。 Swipe By Coordinates:选择滑动的起始和结束位置。 Tap By Coordinates:使得手机界面变换可操作状态,可以点击界面的元素。 Back:模拟Android的返回键。 Refresh Source & Screenshot:刷新页面,用来重新获取手机当前界面。 Start Recording:录制操作。 Search for element:校验定位表达式。 Copy XML Source to Clipboard:复制XML树。 Quit Session & Close Inspector:退出当前Session。 布局3:XML树 以XML树的形式,展示界面上的控件布局。 布局4:控件属性区域 选择某个控件,在这里可以显示该控件的所有属性和值。 搜索元素? ![54b6b51261074569941257d43cd008a7.png][] ![99aa199616d14c7cb88a2c7b050cf88e.png][] appium inspector比UIAutomatorViewer的一个优势在于,可以校验我们编写的定位表达式是否能够正确定位到控件(搜索功能),可以模拟用户操作(点击、滑动、返回)。 ## 三、在代码中打印页面元素 ## 有的时候可能会用UIAutomatorViewer或者appium inspector这两个工具都无法截取到页面需要的状态,或者截屏截到了但是获取不到对应的元素,这个时候就可以用代码打印页面所有的元素,然后根据文案内容去拿到元素信息。 print(driver.page_source) 有的时候觉得这三个方法都还是有些局限性,有更好用的工具欢迎交流讨论~ [42e952e742574cee9f53b2edf1be0124.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/05/08/3f2ed587cc8541f2882b6113ce2a9186.png [8fd87f6f693b415ab49384af0aa8c9cf.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/05/08/da424131188b4b4c969c105718209be6.png [2c982185ce1045deb64b1cebd7d9578c.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/05/08/3ec014b146444a0fa5713dad56a7bdd8.png [a2c0c106feb34733b71934aecc21b317.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/05/08/1d01f8f8f9544fd4844fed109ad9f77c.png [b7fee2aa35c44e7e891165c99f3b8352.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/05/08/3cbce129ffa34f8eb5e30466cee52934.png [c973458c2ce04f60b51f09cb54113c2a.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/05/08/0a5e9c68180e4502806ca73464c5834f.png [c062b861b29f437bbcbf02cfd00789a5.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/05/08/41e67a0c5143421296bf914d98d1c3d2.png [54b6b51261074569941257d43cd008a7.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/05/08/3defc5ec89aa4a1392b8bfae4cb65a52.png [99aa199616d14c7cb88a2c7b050cf88e.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/05/08/95e6fad261844c419b194821e5f92c53.png
还没有评论,来说两句吧...