作业:1.自己去写 向右、向上、向下滑动的方法,并封装。
2.利用地图app去实现地图的放大和缩小。
3.混合h5页面app元素实践
appium里的框架的内容和selenium的内容是类似的
原生app
混合app(原生+h5)
网页BS架构 运行环境不同
纯H5(小程序)
context切换
app里面的网页实际上是通过webview,他就是一个容器,专门用来显示网页的
具备一些条件
利用谷歌里面的一个插件去获取webview,由于网络的原因很多谷歌的插件都用不了
h5环境配置
1.电脑上要有谷歌浏览器
2.手机上也需要有谷歌浏览器
(尽量保证电脑和手机上的谷歌浏览器是一个版本,可以利用豌豆荚去下载)
3.需要有对应的浏览器驱动,
驱动地址
http://npm.taobao.org/mirrors/chromedriver
python安装路径下的浏览器驱动对应电脑谷歌的版本
appium路径中的...
ode_modulesappium-chromedriverchromedriverwin里面
另外一个是appium里面的驱动,对应手机浏览器的版本(74.0.3729.136)
通过链接调试出来的版本就是你要在appium方浏览器驱动的文件夹要放的版本
运行
1.手机和电脑已经连接,同时开启了usb的模式,
2.电脑端和手机端必须都开启谷歌浏览器
3.通过浏览器里面去输入调试的链接chrome://inspect/#devices
怎么样切换context
contexts=driver.contexts
print(contexts)
如果发现webview无法开始,找开发在app里面去加这个方法
在app中配置如下代码(在WebView类中调用静态方法setWebContentsDebuggingEnabled):
if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
注:此步骤,一般需要App开发人员开启。
用我们这个案例的app经常会出现一个刷新的界面,这个界面是由于服务其的原因,运行过程中需要手动点一下
可以自己用自己公司app,如果有好的不需要登录,不需要验证码登录的app,可以给老师提供一下啊。
app尽量小一点。
可以那这个练手
百度地图app自动化代码
from appium import webdriver
from time import sleep
from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.common.multi_action import MultiAction
cunchuxinxi={}
cunchuxinxi['platformName']='Android'
cunchuxinxi['deviceName']='127.0.0.1:62001'
cunchuxinxi['platforVersion']='5.1.1'
# cunchuxinxi['app']=r'C:Usersm1877Desktopcom.baidu.BaiduMap.apk'
cunchuxinxi['appPackage']='com.baidu.BaiduMap'
# cunchuxinxi['appActivity']='com.baidu.baidumaps.WelcomeScreen'
cunchuxinxi['appActivity']='com.baidu.baidumaps.guide.TermsActivity'
driver=webdriver.Remote('http://localhost:4723/wd/hub',cunchuxinxi)
driver.implicitly_wait(25)
driver.find_element_by_id('com.baidu.BaiduMap:id/ok_btn').click()
driver.implicitly_wait(15)
driver.find_element_by_id('com.baidu.BaiduMap:id/btn_enter_map').click()
driver.implicitly_wait(15)
# driver.find_element_by_id('com.baidu.BaiduMap:id/guide_close').click()
# driver.implicitly_wait(15)
# driver.find_element_by_id('com.baidu.BaiduMap:id/dj2').click()
# driver.find_element_by_id('com.baidu.BaiduMap:id/ai5').click()
sleep(10)
x=driver.get_window_size()['width']
y=driver.get_window_size()['height']
def pinch():
action1=TouchAction(driver)
action2=TouchAction(driver)
zoom_action=MultiAction(driver)
action1.press(x=x*0.2,y=y*0.2).wait(1000).move_to(x=x*0.4,y=y*0.4).wait(1000).release()
action2.press(x=x*0.8,y=y*0.8).wait(1000).move_to(x=x*0.6,y=y*0.6).wait(1000).release()
print('start pinch...')
zoom_action.add(action1,action2)
zoom_action.perform()
def zoom():
action1=TouchAction(driver)
action2=TouchAction(driver)
zoom_action=MultiAction(driver)
action1.press(x=x*0.4,y=y*0.4).wait(1000).move_to(x=x*0.2,y=y*0.2).wait(1000).release()
action2.press(x=x*0.6,y=y*0.6).wait(1000).move_to(x=x*0.8,y=y*0.8).wait(1000).release()
print('start zoom...')
zoom_action.add(action1,action2)
zoom_action.perform()
if __name__ == '__main__':
for i in range(3):
pinch()
for i in range(3):
zoom()