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])

 

原文地址:https://www.cnblogs.com/shenhainixin/p/9565698.html