Appium之元素定位(二)

一.元素定位工具

(1)可以使用android sdk自带工具uiautomatorviewer定位,路径存在Android SDK的Tools工具下。

(2)可以使用Appiuma-desktop安装包自带的Appium-inspector工具

二者的区别:

支持平台不同:uiautomatorviewer支持andorid native;Appium-inspector不仅支持android native还支持IOS

二.元素定位方法

1.ID定位

通常就是resource-id的值,直接在uiautomatorview复制即可

2.class name

name定位直接复制text的值就是appium的name定位,不建议使用name定位,1.6以上版本已经不支持这种定位方式

3.Xpath

(1)绝对路径

(2)相对路径

详细使用参照Xpath语法

注意“/”表示直接子元素,

“//”表示子元素的子元素

例如:定位B站APP“热门”

在Inspector展示的层级关系如图所示:

如图

driver.find_element_by_xpath("//android.widget.LinearLayout[1]/\ android.view.View[@resource-id='tv.danmaku.bili:id/video_layout'][1]/\ android.widget.FrameLayout[@resource-id='tv.danmaku.bili:id/cover_layout'][1]"\ ).click()

4.AccessibilityId

在 Android 上,主要使用元素的content-desc属性,如该属性为空,不能使用此定位方式。

5.坐标定位

一般很少用,因为屏幕分辩率发生变化,坐标点也容易发生变化

三.实战环节:

环境准备:

1.JAVA JDK 1.8

2.Android SDK

3.Appium-Desktop

4.Python 3.7

5.Pycharm

6.夜神模拟器

7.使用pip命令安装库

pip install Appium-Python-Client

完整代码如下:
from appium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
import time
desired_caps = {
                'platformName':  'Android',
                'platformVersion': '5.1.1',
                'deviceName': '127.0.0.1:62001',
                'appPackage': 'tv.danmaku.bili',
                'appActivity': '.ui.splash.SplashActivity'
               }
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# time.sleep(10)强制等待
driver.implicitly_wait(10)#隐式等待是针对全部元素设置的等待时间
driver.find_element_by_id('tv.danmaku.bili:id/agree').click()
driver.implicitly_wait(10)
#显式等待是针对某个元素来设置的等待时间。
driver.find_element_by_xpath("//*[@resource-id='tv.danmaku.bili:id/tabs']//android.widget.FrameLayout[3]").click()

WebDriverWait(driver, 10).until(lambda x: x.find_element_by_xpath("//android.widget.LinearLayout[1]/\
android.view.View[@resource-id='tv.danmaku.bili:id/video_layout'][1]/\
android.widget.FrameLayout[@resource-id='tv.danmaku.bili:id/cover_layout'][1]"))

driver.find_element_by_xpath("//android.widget.LinearLayout[1]/\
android.view.View[@resource-id='tv.danmaku.bili:id/video_layout'][1]/\
android.widget.FrameLayout[@resource-id='tv.danmaku.bili:id/cover_layout'][1]"\
                             ).click()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值