• 20200719_33appium应用及H5页面元素定位下


    作业: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()

  • 相关阅读:
    input中的disabled 和 readonly的区别
    pwa-serviceWorker与页面通信postMessage
    PWA之push服务
    vue+typescript入门学习
    基于node 搭建http2服务
    阻止默认行为是配合passive使用
    正则表达式exec方法的陷阱
    serviceWorker-资料参考
    MVC的增删改和Razor
    MVC基础
  • 原文地址:https://www.cnblogs.com/Murraya/p/14099747.html
Copyright © 2020-2023  润新知