zoukankan      html  css  js  c++  java
  • python3+Appium自动化13-H5元素定位实践案例

    测试场景

    启动钉钉app进入工作H5页面,点击考勤签到

    查看webview上元素

    1.电脑上打开chrome浏览器输入:chrome://inspect/#devices

    2.Discover USB devices这个要勾选的,可以检查到手机设备

    3.Discover network targets 这个勾选,检查到网络

    4.下图箭头指向的,是手机的设备名称

    5.Webview in com.alibaba.android.rimet(39.0.00)这个是手机上浏览器的内核版本号39

    (一般电脑上的chrome版本号最好要大于等于这个版本号)

    1.上图红色框框的两个地址就是加载到的webview的网页地址了,点地址下的inspect按钮,进入调试界面

    (当然没有梯子爬的同学,打开是一片空白的,你懂得)

    2.不会爬梯子的也没关系,把对应的url地址复制出来,重新打开一个浏览器标签,输入地址后,按F12也可以进调试界面。

    3.接下来的元素定位就跟selenium的定位是一回事了。

    代码实践:

     1 from appium import webdriver
     2 from selenium.webdriver.support.ui import WebDriverWait
     3 from selenium.common.exceptions import NoSuchElementException
     4 import time
     5 desired_caps = {
     6                 #android的apk
     7                 'platformName': 'Android',
     8                 #手机设备名称
     9                 'deviceName': '127.0.0.1:21503',
    10                 #android系统的版本号
    11                 'platformVersion': '5.1.1',
    12                 # 'deviceName': 'ceshi',
    13                 # 'platformVersion': '7.0',
    14                 # 'udid':'83f04b4b5338424e',
    15 
    16 
    17                 # 'app':r'C:UserszARTDesktopapp-artmall-release.apk',
    18                 # apk包名
    19                 'appPackage': 'com.alibaba.android.rimet',
    20                 # apk的launcherActivity
    21                 'appActivity': 'biz.home.activity.HomeActivity',
    22                 #默认neReset为false,不要在会话前重置应用状态,每次启动都跟第一次启动一样,变为true则不一样
    23                 'noReset':'True',
    24                 #下面两行代码是为了屏蔽软件盘以至于可以输入中文
    25                 'unicodeKeyboard':True,#使用unicode编码方式发送字符串
    26                 'resetKeyboard':True#将键盘隐藏起来
    27                 }
    28 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
    29 WebDriverWait(driver,8).until(lambda x:x.find_element_by_id('com.alibaba.android.rimet:id/home_bottom_tab_button_work'))
    30 driver.find_element_by_id('com.alibaba.android.rimet:id/home_bottom_tab_button_work').click()
    31 
    32 WebDriverWait(driver,8).until(lambda x:x.find_element_by_class_name('android.webkit.WebView'))
    33 #获取所有的环境
    34 contexts=driver.contexts
    35 print(contexts)
    36 time.sleep(10)
    37 #切换到webview
    38 driver.switch_to.context('WEBVIEW_com.alibaba.android.rimet')
    39 #获取当前的环境,看是否切换成功
    40 print(driver.current_context)
    41 
    42 time.sleep(20)
    43 #点击考勤签到
    44 driver.find_element_by_xpath('//*[@id="dingapp"]/div/div[4]/div[1]/div[2]/div/div[3]/div/div[2]/p').click()
    45 
    46 #切换回native
    47 driver.switch_to.context("NATIVE_APP")
    48 # driver.switch_to.context(contexts[0])

     

  • 相关阅读:
    文件目录T位
    改变文件权限的用户身份
    改变进程打开文件默认权限检查方式
    新建文件的UID和GID
    进程的用户ID
    centos7使用无线wifi连接
    2.8. 创建 NSManagedObject 的子类 (Core Data 应用程序实践指南)
    2.7. 属性的各种设置选项(Core Data 应用程序实践指南)
    2.6. 类型(Core Data 应用程序实践指南)
    2.5. Integer 16 、Integer 32、Integer 64(Core Data 应用程序实践指南)
  • 原文地址:https://www.cnblogs.com/shenhainixin/p/9565698.html
Copyright © 2011-2022 走看看