appium---第二个脚本,定位页面元素

时间:2023-03-08 18:19:24

工具使用:

1、android-sdk的自带工具---uiautomator工具

appium---第二个脚本,定位页面元素

2、使用find_element_by_id寻找元素位置

 from appium import webdriver;
from appium import version;
#from selenium import webdriver;
import time;
#目前最新更新 #from appium import webDriver
#,
pack_info={
'platformName':'android',
'deviceName':'215a343c0804',
'platformVersion':'7.1.2',
'appPackage':'包名',
'appActivity':'启动Activity' } drive=webdriver.Remote('http://127.0.0.1:4723/wd/hub',pack_info); #drive=webdriver.Remote('http://127.0.0.1:4723/wd/hub',pack_info); # #休眠5s
time.sleep();
#点击对应的元素
drive.find_element_by_id('包名:id/iv_download_img').click()----加这一句就行
print('执行成功')

产生了一个问题:

①、运行后,appium可以正常运行,并开启APP,但是无法进行点击事件,事实上,并没有任何报错,纳闷中

 解决方式尝试1:开发者模式中,打开允许模拟点击,完美解决

2、扩展-使用其他的定位元素的办法

①、在uiautomator中获取元素id(常用):.find_element_by_id('包名:id/iv_download_img').click()---->在uiautomator中的resource-id中直接复制即可

②、使用使用xpath获取元素:

1)如果页面中text是唯一的,那么就通过text文本获取(格式://*[@text='掃一掃',必须要有斜杠和一个※号)(很少用):find_element_by_xpath("//*[@text='掃一掃']").click();------->根据tex寻找,也是在uiautomator中的元素text中直接复制即可

2)同上,也可以用uiautomator中的content-desc文本获取,正常情况下,它的内容和text是一样的,很多时候,它是空的,用法也是和text一样find_element_by_xpath("//*[@content-desc='掃一掃']").click();

2)如果页面中class是唯一的,那么就通过class获取(格式://classname,必须要有两个斜杠)(很少用):drive.find_element_by_xpath('//android.widget.TextView').click();----->这个运行无结果,无报错,因为页面中这个class不是唯一的,所以不知道应该要取哪一个。

3)contains模糊匹配(类似模糊匹配,这个通常用于要定位一组的元素,而不是单个元素时,效率尤其突出)

4)层级定位--父定子位(很有用)

参考

https://www.cnblogs.com/syw20170419/p/8192629.html