appium自动化手机网页

学习笔记整理:

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

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

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

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

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

参考代码:

#不需要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版本,和手机系统没有关系。

我用的是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

 

参考代码:

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

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

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

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

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

方法三: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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值