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的定位是一回事了。
代码实践:
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import NoSuchElementException
import time
desired_caps = {
#android的apk
'platformName': 'Android',
#手机设备名称
'deviceName': '127.0.0.1:21503',
#android系统的版本号
'platformVersion': '5.1.1',
# 'deviceName': 'ceshi',
# 'platformVersion': '7.0',
# 'udid':'83f04b4b5338424e', # 'app':r'C:\Users\bzART\Desktop\app-artmall-release.apk',
# apk包名
'appPackage': 'com.alibaba.android.rimet',
# apk的launcherActivity
'appActivity': 'biz.home.activity.HomeActivity',
#默认neReset为false,不要在会话前重置应用状态,每次启动都跟第一次启动一样,变为true则不一样
'noReset':'True',
#下面两行代码是为了屏蔽软件盘以至于可以输入中文
'unicodeKeyboard':True,#使用unicode编码方式发送字符串
'resetKeyboard':True#将键盘隐藏起来
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
WebDriverWait(driver,8).until(lambda x:x.find_element_by_id('com.alibaba.android.rimet:id/home_bottom_tab_button_work'))
driver.find_element_by_id('com.alibaba.android.rimet:id/home_bottom_tab_button_work').click() WebDriverWait(driver,8).until(lambda x:x.find_element_by_class_name('android.webkit.WebView'))
#获取所有的环境
contexts=driver.contexts
print(contexts)
time.sleep(10)
#切换到webview
driver.switch_to.context('WEBVIEW_com.alibaba.android.rimet')
#获取当前的环境,看是否切换成功
print(driver.current_context) time.sleep(20)
#点击考勤签到
driver.find_element_by_xpath('//*[@id="dingapp"]/div/div[4]/div[1]/div[2]/div/div[3]/div/div[2]/p').click() #切换回native
driver.switch_to.context("NATIVE_APP")
# driver.switch_to.context(contexts[0])
python3+Appium自动化13-H5元素定位实践案例的更多相关文章
- python+Appium自动化:H5元素定位
问题思考 在混合开发的App中,经常会有内嵌的H5页面.那么这些H5页面元素该如何进行定位操作呢? 解决思路 针对这种场景直接使用前面所讲的方法来进行定位是行不通的,因为前面的都是基于Andriod原 ...
- appium自动化测试之UIautomatorviewer元素定位
appium自动化测试之UIautomatorviewer元素定位 标签(空格分隔): uiautomatorviewer元素定位 前面的章节,已经总结了怎么搭建环境,怎样成功启动一个APP了,这里具 ...
- python+Appium自动化:id元素定位
元素定位 与web自动化一样,app自动化元素定位也是非常重要的一环,,appium也是提供了很多元素定位的方法,比如:id.name.class.层级定位等等. 元素定位方式 id name cla ...
- python+Appium自动化:各种元素定位方法
name定位 driver.find_element_by_name('飞利浦净水').click() 测试结果报错:selenium.common.exceptions.InvalidSelecto ...
- python3+Appium自动化09-Capability配置数据分离实践
代码实现 参数配置表:desired_caps.yaml platformName: Android deviceName: 192.168.175.101:5555 platformVersion: ...
- 混合元素app的H5元素定位
问题思考 在混合开发的App中,经常会有内嵌的H5页面.那么这些H5页面元素该如何进行定位操作呢? 解决思路 针对这种场景直接使用前面所讲的方法来进行定位是行不通的,因为前面的都是基于Andriod原 ...
- 5、通过Appium Desktop实现页面元素定位
之前我们已经安装了Appium Desktop,下面就让我们使用Appium Desktop实现页面元素定位 1.首先我们打开Appium Desktop,进入如下界面,点击Start Server ...
- python3+Appium自动化12-H5元素定位环境搭建
前言 在混合开发的App中,经常会有内嵌的H5页面.那么这些H5页面元素该如何进行定位操作呢? 针对这种场景直接使用前面所讲的方法来进行定位是行不通的,因为前面的都是基于Andriod原生控件进行元素 ...
- 『与善仁』Appium基础 — 17、元素定位工具(一)
目录 1.uiautomatorviewer介绍 2.uiautomatorviewer工具打开方式 3.uiautomatorviewer布局介绍 4.uiautomatorviewer工具的使用 ...
随机推荐
- 在robotframework里面,怎么在已有的字典中加一个键值对呢
- 错误页设置,设置HTTP状态码404,500(八)
web.xml设置错误跳转(注意,路径必须以斜杠开头)
- sqlserver清楚文本中的换行符
REPLACE(@string,CHAR(13)+CHAR(10),char(32))
- poj2406 Power Strings(kmp)
poj2406 Power Strings(kmp) 给出一个字符串,问这个字符串是一个字符串重复几次.要求最大化重复次数. 若当前字符串为S,用kmp匹配'\0'+S和S即可. #include & ...
- The Datawarehouse's future is bright
The Future Data Warehouse Professionals I hava remarked many times that a successful data warehouse ...
- 微信Dat文件解码
最近在整理磁盘文件,因为经过一段时间的蹂躏后,磁盘实在是太多东西了,不整理一下,简直对不住我的SSD好嘛.偶然发现磁盘中某公司的文件夹占用空间简直不能再大,那可是我的C盘啊,合计才119GB的SSD空 ...
- P2156 [SDOI2009]细胞探索
$ \color{#0066ff}{ 题目描述 }$ 生物课上,老师开始为同学们介绍细胞.为了加深同学们的印象,老师在一张N×M的矩阵中定义了一种细胞,矩阵中仅有井号"#"和点&q ...
- oracle Date format日期和月份不补0
格式化日期,日,月只有一位小数的只显示一位,不自动加0,在dd/mm 前面加上fm即可去掉前面的0 如:select to_char(t,'YYYY/fmMM/fmDD') from testdata ...
- C++基础学习1: C++布尔类型
布尔类型(bool)是C++新增的一种基本数据类型.在标准的C语言中并未定义bool类型,如果需要使用bool类型, 程序员可以通过宏定义来自定义一个bool类型,定义语句如下: #define bo ...
- 各种Helper代码
1.读取XML文件 /// <summary> /// 读取XML配置文件类 /// </summary> public class XmlHelper { private s ...