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

工具使用:

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

 

2、使用find_element_by_id寻找元素位置

 1 from appium import webdriver;
 2 from appium import version;
 3 #from selenium import webdriver;
 4 import time;
 5 #目前最新更新
 6 
 7 #from appium import webDriver
 8 #,
 9 pack_info={
10 'platformName':'android',
11 'deviceName':'215a343c0804',
12 'platformVersion':'7.1.2',
13 'appPackage':'包名',
14 'appActivity':'启动Activity'
15 
16 }
17 
18 drive=webdriver.Remote('http://127.0.0.1:4723/wd/hub',pack_info);
19 
20 #drive=webdriver.Remote('http://127.0.0.1:4723/wd/hub',pack_info);
21 
22 #
23 
24 #休眠5s
25 time.sleep(5);
26 #点击对应的元素
27 28 drive.find_element_by_id('包名:id/iv_download_img').click()----加这一句就行
29 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

posted @ 2019-03-04 12:01  littlepoemers_23ujhs  阅读(280)  评论(0编辑  收藏  举报