七、appium自动化测试之H5页面测试

Cc905 2020-07-13 20:23:00
原文地址:https://www.cnblogs.com/Cc905/p/13094823.html

参考链接

<https://testerhome.com/topics/7866&gt;

<https://sutune.me/2018/04/30/appium-h5/&gt;

chromedriver下载地址:<https://chromedriver.chromium.org/downloads&gt;

测试环境准备

1.PC端安装chrome,手机端安装谷歌浏览器(部分品牌应用商店可能会没有,可以安装应用宝,再到应用宝上安装google浏览器,或者PC端应用宝内下载。不太清楚这个有什么用途,我不按安装也是可以运行的。)

2. 打开webview调试模式

3.浏览器输入 <chrome://inspect/devices#devices>,可以看到当前webview页面,如果获取不到可以刷新下,或者调试模式未打开。

![]()![]()

代码准备

desired_caps_a = {'platformName': &quot;Android&quot;,
                      'platFormVersion': &quot;10&quot;,
                      'deviceName': &quot;dd&quot;,
                      'udid': &quot;648d4f29&quot;,
                      # 'automationName': &quot;UiAutomator1&quot;,
                      'noReset': True,
                      'unicodeKeyboard': True,
                      'resetKeyboard': True,
                      'appPackage': &quot;com.tencent.mm&quot;,
                      'appActivity': &quot;com.tencent.mm.ui.LauncherUI&quot;,
                      'chromedriverExecutable': r&quot;C:\Users\v_yddchen\Desktop\chromedriver_win32 77.0\chromedriver.exe&quot;,
                      'chromeOptions': {'androidProcess': &quot;com.tencent.mm:toolsmp&quot;}  # webview的进程名字,不然会报错
# 测试获取H5元素
    my_logging.debug(device_a.contexts)
    device_a.find_element_by_android_uiautomator('new UiSelector().text(&quot;Cc&quot;)').click()
    device_a.find_element_by_android_uiautomator('new UiSelector().textContains(&quot;警惕&quot;)').click()
    WebDriverWait(device_a, 20).until(lambda x: x.find_element_by_android_uiautomator('new UiSelector().text(&quot;腾讯新闻&quot;)'))
    my_logging.debug(device_a.contexts)
    device_a.switch_to.context(&quot;WEBVIEW_com.tencent.mm:toolsmp&quot;)
    time.sleep(3)
    my_logging.debug(device_a.current_context)

错误

运行上述代码报错了

unknown error: Failed to get PID for the following process: com.tencent.mm

![]()

解决方法:

1.有说是appiumd的chromedriver版本不对,虽然不太认同,但是我尝试了一下

设备:oppo reno android 9 webdriver 70.0.3538.110

PC端chrome版本81.0.4044.117 手机端chrome同样版本 81.0.4044.117

appium webview的版本78.0.3904.62

...\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win的路径下,更换chromedriver的版本,或者初始化时

chromedriverExecutable指定chromedriver的路径
更换chromedriver版本 81、78、70都是一样的报错(有点怀疑源码有啥问题,github上搜到了一些蛛丝马迹,等我再翻翻)。

2.更换了一台设备 oppo findx2 Android 10 webview 74.0.3729.186

以上代码运行成功。

奇怪的是,不同手机输出的contexts是不同的。

oppo reno android 9 webdriver 70.0.3538.110

![]()

oppo findx2 Android 10 webview 74.0.3729.186

![]()

3.确定appium的chromedriver版本的决定性因素

oppo findx2 Android 10 webview 74.0.3729.186

![]()

更换appium chromedriver的版本为73,低于系统webdriver和app的webview版本,运行提示出错

![]()

如果chromedriver的版本为77,运行成功。

设置为81或者78,运行失败。明确报错chrome version问题是很好解决的。

![]()

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。