前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自动化-Appium-元素定位工具

自动化-Appium-元素定位工具

作者头像
wangmcn
发布2022-07-25 13:05:25
4.4K1
发布2022-07-25 13:05:25
举报
文章被收录于专栏:AllTests软件测试

元素定位工具

本章节讲解Android / IOS常用的元素定位工具,针对包括原生(APP)、Web(WEBVIEW)和混合(APP与WEBVIEW)。

第1章 Android

1.1APP

1.1.1uiautomatorviewer

uiautomatorviewer是Android SDK里的一个工具,这个工具在Android SDK目录下的tools文件夹下。uiautomatorviewer使用简单,速度也相对比较快。

在Windows / Mac环境下操作基本一致,这里以Windows进行讲解。使用adb devices命令查看模拟器或真机是否连接上。如图所示已经连上设备。

在模拟器或真机里,打开要定位元素的App应用程序,操作到想要定位的页面。之后双击打开uiautomatorviewer文件。

uiautomatorviewer工具打开后,点击左上角的拍照按钮。

点击完后,设备上的界面就会被同步到这个工具的左侧,点击左侧需要查看的控件,在这个工具的右侧就可以看到对应这个控件的详细信息。

如果需要继续定位其他页面里的元素,将设备操作到要定位元素的页面后,再次点击工具左上角的拍照按钮,就可以抓取最新的页面元素信息。

点击保存按钮,可保存页面屏幕截屏和.uix文件(页面源码)。

保存后,生成的2个文件(页面屏幕截屏和.uix文件)。

点击打开文件,可以将之前保存好的页面屏幕截屏和.uix文件导入进来。

导入后即可进行元素定位操作。

1.1.2Appium Inspector

Appium Inspector是Appium Desktop附带的一个元素定位检查器,用来调试定位应用程序很方便。

在Windows / Mac环境下操作基本一致,这里以Windows进行讲解。使用adb devices命令查看模拟器或真机是否连接上。如图所示已经连上设备。

启动Appium Desktop。

Simple模式可以设置服务IP和端口。

Advanced模式可以设置更多(例如:允许会话重写),之后可以保存此预设置。例如:Demo。

Presets模式可以启动或删除之前保存好的预设置。例如:之前保存好的Demo预设置进行启动或删除。

一般选择Simple模式即可。如服务IP和端口默认的情况下,点击Start Server v1.8.0来开启Appium服务。

点击放大镜(Start Inspector Session)。

选择Automatic Server配置Desired Capabilities信息。

可以直接点击左边Desired Capabilities添加或删除完善Desired Capabilities信息。也可以直接把Desired Capabilities生成JSON直接复制到右侧的JSON Representation框中并保存。两种方法效果是一样的。

例如JSON信息:

代码语言:javascript
复制
{
  "platformName": "Android",
  "platformVersion": "6.0",
  "deviceName": "Galaxy C7",
  "udid": "MYV0215825000026",
  "automationName": "Appium",
  "appPackage": "com.xiaoV.BWalletBeta",
  "appActivity": "com.xiaoV.BWallet.yklogin.YkSplashActivity"
}

之后点击Start Session。

启动成功后,默认会启动首页,如果需要查看其它页面的控件信息,可以在设备上手动点击进入需要查看的页面,然后点击屏幕中央的刷新按钮,刷新屏幕即可。在左侧显示区域移动鼠标,可以看到选中区域元素的属性。

Appium Inspector还支持录制功能,点击录制按钮,进行操作(例如:输入数据),之后会生成操作代码(支持Java、Python)。

1.2WEBVIEW

1.2.1Chrome Inspect

Chrome Inspect是Chrome提供的一个移动端Web开发调试工具,通过它我们可以调试手机页面,可以看到页面的源码,从而进行元素的定位。

在Windows / Mac环境下操作基本一致,这里以Windows进行讲解。首先要有一台PC,上面安装了Chrome浏览器;一台Android模拟器或真机。将设备通过USB数据线连接到你的PC机并开启USB调试模式,使用adb devices命令查看模拟器或真机是否连接上。如图所示已经连上设备。

打开设备应用程序里含有Webview的页面,接下来打开PC的Chrome浏览器,输入访问地址chrome://inspect/

如图所示,可以检测到当前应用程序界面是Webview。

点击页面的inspect链接,弹出新窗口,显示当前页面的Webview元素信息(由于国内网络问题,第一次页面加载可能需要FANQIANG)。元素定位方法同Selenium WebDriver一致。

但是一般在Chrome调试定位不如在Firefox上方便,所以作者一般是新建一个.html文件,将此页面的源码拷贝进去。如图:页面源码拷贝到.html文件里

之后打开Firefox,将此.html文件拖拽进去,如果显示乱码,可将Firefox的文字编码格式改为中文,虽然在Firefox上页面显示样式丢失,但基本的元素都是可见的,再结合定位工具Firebug和FirePath调试定位还是很方便的。

注意:当连接的设备是真机时,Chrome Inspect无法检测到Webview页面是怎么回事?

从Android 4.4开始,webkit是支持远程调试的,不过需要将App的debug模式打开,可以使用如下代码:WebView.setWebContentsDebuggingEnabled(true);

其实大部分App的debug模式都是关闭的,要去找一个开启debug模式的版本还是比较麻烦的。因此需要使用借助第三方工具来强制开启任何App的Android webview debug模式,使之可以使用Chrome Inspect。而这个工具就是Xposed。

解决方法:

1、将设备进行root

因为涉及到root权限,因此需要将设备进行root。有很多工具可以来root,比如KingRoot等。

2、安装Xposed框架

打开Xposed文件里的de.robv.android.xposed.installer_v33_36570c.apk安装到设备里。

或者:

打开官网地址下载安装:http://repo.xposed.info/module/de.robv.android.xposed.installer

3、安装Xposed webview debugging模块

打开Xposed文件里的WebViewDebugHook.apk安装到设备里。

4、激活Xposed

安装完上述2个程序之后,可以看到设备上出现了一个叫Xposed Installer的图标,点击进去之后会看到提示说Xposed未激活,点击进入框架页面,点击“安装/更新”按钮即可。安装完成之后,重启再打开,点击进入模块页面,勾选“webView debug hook”,再重启,重启之后即激活了Xposed。之后就可以使用Chrome Inspect查看App的webview页面元素了。

第2章 IOS

2.1APP

2.1.1Appium Inspector

Appium Inspector是Appium Desktop附带的一个元素定位检查器,用来调试定位应用程序很方便。

在Mac环境下,终端输入idevice_id -l,查看设备是否连接上。

如图所示:显示该真机的udid信息。

启动Appium Desktop。

Simple模式可以设置服务IP和端口。

Advanced模式可以设置更多(例如:允许会话重写),之后可以保存此预设置。例如:Demo。

Presets模式可以启动或删除之前保存好的预设置。例如:之前保存好的Demo预设置进行启动或删除。

一般选择Simple模式即可。如服务IP和端口默认的情况下,点击Start Server v1.8.0来开启Appium服务。

点击放大镜(Start Inspector Session)。

选择Automatic Server配置Desired Capabilities信息。

可以直接点击左边Desired Capabilities添加或删除完善Desired Capabilities信息。也可以直接把Desired Capabilities生成JSON直接复制到右侧的JSON Representation框中并保存。两种方法效果是一样的。

例如JSON信息:

代码语言:javascript
复制
{
  "platformName": "iOS",
  "platformVersion": "11.1",
  "deviceName": "test",
  "automationName": "XCUITest",
  "bundleId": "com.xiaoV.BangWalletBeta",
  "udid": "c5dc675bddf7d1ac6d91783d5224d72b427f8d04",
  "xcodeOrgId": "69XXXXXXXX",
  "xcodeSigningId": "iPhone Developer"
}

之后点击Start Session。

启动成功后,默认会启动首页,如果需要查看其它页面的控件信息,可以在设备上手动点击进入需要查看的页面,然后点击屏幕中央的刷新按钮,刷新屏幕即可。在左侧显示区域移动鼠标,可以看到选中区域元素的属性。

Appium Inspector还支持录制功能,点击录制按钮,进行操作(例如:点击按钮),之后会生成操作代码(支持Java、Python)。

2.2WEBVIEW

2.2.1Safari

1、设置模拟器或真机 打开模拟器或真机的settings --> Safari --> Advanced,把里面的Web Inspector打开。

2、设置Mac机器上的Safari 打开Safari --> 点击菜单栏上的"Safari" --> Preferences... --> Advanced --> 选上Show Develop menu in menu bar。

3、在模拟器或真机上打开需要查看webview的app,跳转到webview。

4、打开Mac上的Safari,选择开发--->设备(如图:设备名为test),可以看到此时真机设备打开的Webview页面,例如:帮帮应用的帮助中心页面。

点击帮助中心页面的链接,会弹出新窗口,显示帮助中心页面的html源码信息,则可以获取相应的Webview元素信息。

2.2.2ios_webkit_debug_proxy

首先将真机设备上的应用程序打开,之后打开此应用显示的Webview页面;

之后在Mac上打开终端,输入启动代理命令

ios_webkit_debug_proxy -f chrome-devtools://devtools/bundled/inspector.html

Mac上打开Chrome浏览器,在地址栏输入http://localhost:9221/,这里会显示所有已连接的设备清单,选择一个设备并点击打开。例如:真机设备(test)

此时检测到真机设备上打开的Webview页面,例如:帮助中心页面

选中后,鼠标右键点击转到……

打开选中的页面,将Chrome的开发者工具打开,显示html源码信息,则可以获取相应的Webview元素信息。

或者,选中后,鼠标右键复制链接地址

例如:

chrome-devtools://devtools/bundled/inspector.html?ws=localhost:9223/devtools/page/1

打开Chrome新窗口,将复制的地址粘贴后访问

显示html源码信息,则可以获取相应的Webview元素信息。

2.2.3RemoteDebug iOS WebKit Adapter

该工具可以是你像调试Android webview一样调试IOS webview页面,非常方便。

RemoteDebug iOS Webkit Adapter(能够让你在Windows以及Mac上,利用VS Code、Chrome DevTools、Firefox debugger.html等工具来调试Safari、IOS WebViews)。

RemoteDebug iOS Webkit Adapter的用途:

1、能够让一些基于Chrome Debugging Protocol(CDP)实现的工具也具备调试IOS Safari / Webkit的能力。

2、能够提供协议适配器(protocol adapter),该协议适配器主要用于Chrome Debugging Protocol 以及Webkit Remote Debugging Protocol之间API存在的差异性。

3、能够在ios-webkit-debug-proxy上进行二次开发,这是因为RemoteDebug iOS Webkit Adapter项目是基于ios-webkit-debug-proxy项目构建的,也可以把RemoteDebug iOS Webkit Adapter项目看作是ios-webkit-debug-proxy项目的延伸。

RemoteDebug iOS WebKit Adapter是可以运行在Windows以及Mac平台上的。可以通过NPM安装包的方式,来开始安装该适配器。

安装:

确保已安装Homebrew,并运行以下命令来安装ios-webkit-debug-proxy和libimobiledevice

brew update

brew unlink libimobiledevice ios-webkit-debug-proxy

brew uninstall --force libimobiledevice ios-webkit-debug-proxy

brew install --HEAD libimobiledevice

brew install --HEAD ios-webkit-debug-proxy

安装RemoteDebug iOS Webkit Adapter:

npm install remotedebug-ios-webkit-adapter -g

打开设备设置--> Safari首选项-->启用“Web Inspector”。

Mac上打开终端输入启动命令(ios-webkit-debug-proxy将自动为你运行,无需单独启动):

remotedebug_ios_webkit_adapter --port=9000

打开Mac上Chrome浏览器,地址栏输入chrome://inspect

之后配置“Discover network targets”,添加localhost:9000

此时检测到模拟器或真机设备上打开的Webview页面。

点击页面的inspect链接,弹出新窗口,显示当前页面的Webview元素信息(由于国内网络问题,第一次页面加载可能需要FANQIANG)。元素定位方法同Selenium WebDriver一致。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AllTests软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第1章 Android
    • 1.1.1uiautomatorviewer
      • 1.1.2Appium Inspector
      • 1.2WEBVIEW
        • 1.2.1Chrome Inspect
        • 第2章 IOS
          • 2.1.1Appium Inspector
          • 2.2WEBVIEW
            • 2.2.1Safari
              • 2.2.2ios_webkit_debug_proxy
                • 2.2.3RemoteDebug iOS WebKit Adapter
                相关产品与服务
                云开发 CLI 工具
                云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档