欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

appium自动化手机网页

程序员文章站 2022-07-12 21:02:19
...

学习笔记整理:

APP主要有三种开发模式,NativeAPP,WebAPP,HybirdAPP。

我们用Appium做App Ui自动化时,主要步骤是定位元素,对元素操作,操作结果处理。

其中webAPP,比如Chrome搜索百度,然后用UI Automator Viewer打开后,是无法定位页面元素的,如下图,是一整块。

appium自动化手机网页

此时可以利用浏览器的手机模式打开百度页面进行元素定位。

一、电脑上自动化手机模式的网页

appium自动化手机网页

参考代码:

#不需要appium
import time
from selenium import webdriver

#配置浏览器以手机模式启动
chrome_options=webdriver.ChromeOptions()
#选择一种存在的模拟手机设备
chrome_options.add_experimental_option('mobileEmulation',{'deviceName':'iPhone X'})
driver=webdriver.Chrome(desired_capabilities=chrome_options.to_capabilities())
driver.get('http://www.baidu.com')
driver.find_element_by_id('index-kw').send_keys('松勤\n')
time.sleep(1)
driver.quit()

二、.手机端浏览器运行自动化网页:

1.手机端需要安装chrome

2.电脑端需要下载和手机端Chrome对应版本的Chromedriver。

需要注意的是,Chromedriver的版本是和PC端系统一致的,如果是window系统,就下win版本的,如果是mac,下载mac版本,和手机系统没有关系。

appium自动化手机网页

我用的是mac,所以需要下载mac版本的以80开头的chromedriver。

版本对应关系:https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/web/chromedriver.md 

国内下载地址:https://npm.taobao.org/mirrors/chromedriver

 

appium自动化手机网页

参考代码:

import time
from appium import webdriver

desired_Caps={
    'platform':'Android',
    'platformVersion':'6.0',
    'deviceName':'emulator-5554',
    #如果是Chrome浏览器,不需要appPackage和appActivity属性。
    'browserName':'Chrome', 
    #这里的XXX是Chromedriver的路径,还有另外一个chromedriverExecutable,这个需要带上文件名
    'chromedriverExecutableDir':'XXXX',
    'noRest':True,
    'newCommandTimeout':6000,
    'automationName':'UiAutomator2'
}

driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_Caps)
driver.get('http://www.baidu.com')
driver.find_element_by_id('index-kw').send_keys('松勤\n')
time.sleep(1)
driver.quit()

三、嵌套在App内部的网页(hybirdApp)

1.修改源码,开启webviewdebug


WebView.setWebContentsDebuggingEnabled(true)

一般找开发帮忙改一下打个包。

好像有使用xposed强制打开,可以参考https://www.cnblogs.com/jiuyigirl/p/7372558.html,我没试过,先Mark下。

2.查看webview元素

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

appium自动化手机网页

点击inspect,需要*才能看到,然后可以定位元素。

3.下载对应版本的webdriver,应该是52版本

方法一:在手机设置里搜索webview实现(有的手机搜不到)

方法二:可以通过运行代码报错方式找到,desired_caps中不添加chromedriverExecutableDir,运行时控制台会报错

appium自动化手机网页

方法三:Chrome://inspect那里应该也是能看到的

参考代码:

import time
from appium import webdriver

desired_caps={
    #移动设备平台
    'platformName':'Android',
    #平台OS版本号
    'plathformVersion':'6',
    #设备的名称--值可以随便写
    'deviceName':'emulator-5554',
    #提供被测app的信息-包名,入口信息
    'appPackage':'com.example.jcy.wvtest',
    'appActivity':'com.example.jcy.wvtest.MainActivity',
    # 'browserName':'Chrome',
    'chromedriverExecutableDir':'XXX',
    #确保自动化之后不重置app
    'noReset':True,
    #设置session的超时时间,单位秒
    'newCommandTimeout':6000,
    'automationName':'UiAutomator2'
}
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
driver.implicitly_wait(10)
#查看所有contexts
print(driver.contexts)
#webview的context一般为WEBVIEW_包名
driver.switch_to.context('WEBVIEW_com.example.jcy.wvtest')
time.sleep(1)
driver.find_element_by_id('index-kw').send_keys('松勤\n')
#切回原生
driver.switch_to.context('NATIVE_APP')
driver.find_element_by_accessibility_id('通知').click()

 

相关标签: 随笔