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工具的使用 ...
随机推荐
- 使用Notepad++运行Python脚本
1.安装python,我用的是anaconda 2.打开找到anaconda安装目录,找到python.exe,记录绝对路径.我的是D:\app\anaconda3\python.exe 3.Note ...
- 文本PDG文件名构成
作者:马健邮箱:stronghorse_mj@hotmail.com发布:2008.08.03 文本PDG的构成规则为:<前缀><起始页号>_<页数>.pdg 前缀 ...
- android studio 程序员有福了—从layout自动生成viewholder类
狂点这里下载 超级牛逼的插件啊,比那些使用SparseArray的强太多了! 在android studio 1.0上测试,没有问题. 不说了直接说功能 Android Toolbox Plugin ...
- VB.NET提取TXT文档指定内容
今天有浏览论坛时,又看见一篇是读取TXT文本文件的论题.Insus.NET也想以自己的想法来实现,并分享于此. 文本文件是比较复杂,获取数据也是一些文本行中取其中一部分.为了能够取到较精准的数据,In ...
- linux内核中的##__VA_ARGS__有什么作用?
答: 1.__VA_ARGS__是一个可变参数宏: 2. 当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错: 3. 示例 3.1 #defin ...
- P2253 好一个一中腰鼓!
题意:给你一个序列,初始是0,每次一个操作,把一个数^=1 每次求出最长01串的长度 正解:线段树(虽然暴力能过) 对于每个区间,记录三个值 lmax,以l为首的01串长度 rmax,以r为尾的01串 ...
- 一些优秀的Firefox扩展
AdBlock Plus 拦截广告. 在对付CSDN等垃圾网站时非常有用. Block Site 拦截你不想看的网站 没有知乎的一天真好... XStyle 设置自己喜欢的CSS样式(表示自己并不会用 ...
- PHP删除目录下的空目录
function rm_empty_dir($path){ if(is_dir($path) && ($handle = opendir($path))!==false){ ...
- json遍历,List<Map<String,Object>>遍历
js怎样给input对象追加属性,如disabled $(":textbox").attr({"disabled":true}); List<Map< ...
- Unity 关节
引言 关节组件一共分为5大类,它们分别是链条关节.固定关节.弹簧关节.角色关节和可配置关节. 链条关节(Hinge Joint):将两个物体以链条的形式绑在一起,当力量过大超过链条的固定力矩时,两个物 ...