appium元素定位问题
来源:互联网 发布:淘宝购物后红包怎么领 编辑:程序博客网 时间:2024/05/21 21:44
appium元素定位问题
从上一篇中我们知道了如何利用代码启动app
对于元素定位问题一共有两种方式,一种是原生谷歌框架进行定位,这种方式是最基本的定位方式。
另一种是通过html元素进行定位,这种方式非常方便,但对于没有用html写的app则不能用这种方式。
元生谷歌框架定位方式
- 我们将手机和电脑连接并且设置成调试模式,然后找到进入 sdk > tools > bin 然后找到 uiautomatorviewer.bat 双击。
- 进入界面后点击下图步骤一中的随便一个按钮 (那个定位不好换哪个),然后获取屏幕截图后,加我我们需要点击元素为 1 ,则可选择 text,resource-id,class,content-desc 等方式先定位元素,然后操作。
上图对应的元素和对应的操作分别为:
所以我们需要定位 1 时,我们查找 resource-id 对应的名称是 id 内容: com.miui.calculator:id/btn_1
定位代码及其操作:
driver.find_element_by_id(“com.miui.calculator:id/btn_1”).click()
通过html元素进行定位
- 首先我们需要翻墙,通过蓝灯软件,或者其他方式。点击进入蓝灯网页,然后登陆谷歌能够浏览,说明翻墙成功。
蓝灯软件可能也被墙了,可以选择找一个正规网站下载他们已经下载好了的蓝灯下载。
- 然后打开Chrome浏览器在地址栏中输入chrome://inspect回车,并且在手机上打开需要测试的软件,并刷新Chrome,可以看到WebView如下图所示:
点击 图中inspect进入,元素定位时,首选点击画红圈包围的图标,然后移动到想要定位的元素上单机。后边元素定位和 web端元素定位一样。
但是进行此方式时,首先我们需要将driver改变成WebView方式,之后才能使用此方式。
所以,以下是具体代码实现:
from appium import webdriverimport timedesired_caps = {}desired_caps['device'] = 'android'desired_caps['platformName'] = 'Android'desired_caps['browserName'] = ''desired_caps['version'] = '6.0.1'desired_caps['deviceName'] = 'ba682d20'desired_caps['unicodeKeyboard'] = 'True'desired_caps['resetKeyboard'] = 'True'#desired_caps['app'] = PATH('D:\\UdihuoV2.7.0.apk')desired_caps['appPackage'] ='com.yonyou.Uorder'desired_caps['appActivity'] ='io.dcloud.PandoraEntry'desired_caps['appWaitActivity'] ='io.dcloud.PandoraEntryActivity'desired_caps['newCommandTimeout'] = '3600'driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)time.sleep(4)eles = driver.contextsfor i in eles: print(i)driver.switch_to.context("WEBVIEW_com.yonyou.Uorder")driver.find_element_by_css_selector("[class='welcomescreen-closebtn close-welcomescreen']").click()
代码解释
将所有的能转换的模式都储存在 eles 中
eles = driver.contexts
转换成WebView模式
driver.switch_to.context(“WEBVIEW_com.yonyou.Uorder”)
进行元素定位并且进行click()操作,定位方式能够使用html定位方式了
driver.find_element_by_css_selector(“[class=’welcomescreen-closebtn close-welcomescreen’]”).click()
可能出现的问题
可能会发现在 执行driver.switch_to.context(“WEBVIEW_com.yonyou.Uorder”) 时,会报错,此时我们应该首先排除浏览器版本对应是否正确
首先打开Chrome浏览器,然后地址栏输入 chrome://inspect 回车,从图中划红线得知chrome浏览器版本为 v55,
然后我们只需要找到 webdriver 对应于 v55 的版本,并且进入Appium安装安装目录下的 Appium\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win文件夹,并且用其覆盖此文件夹下的chromedriver.exe, 问题便可解决。
- appium元素定位问题
- Appium 元素定位
- Appium自动化元素定位
- appium定位元素
- Appium元素定位汇总
- appium关于定位元素
- appium定位元素java篇
- appium定位元素java篇
- appium定位元素java篇
- appium定位元素java篇
- appium定位元素java篇
- appium定位元素java篇
- appium 如何定位webview元素
- Appium-Android元素定位方式
- appium元素定位(12)
- Appium元素定位(uiautomatorviewer)
- appium 元素定位与交互中文文档
- ios+appium:定位元素无反应
- Linux系统下常见的Xshell运行命令——Xshell入门必看
- linux远程tomcat查看日志的命令是什么
- Google File System 论文(中文翻译)
- 用python读取文件夹下所有文件并写进同一文件
- Mutual information and Normalized Mutual information 互信息和标准化互信息
- appium元素定位问题
- Android N 各种ANR的时间
- error C4996: 'getpid': The POSIX name for this item is deprecated. Instead, use the ISO C++ conforma
- git clone错误
- 兼容的获取页面滚动出去的距离笔记
- 自定义title标题联动
- 大数据—分类和架构简介
- ReactNative在Windows系统环境搭建
- rabbitmq 延迟队列的实现(PHP)