我们必须告诉Appium怎样去定位元素,用来模拟用户动作,或者查看元素的属性和状态,以便我们可以执行检查。例如,我们在淘宝上购物时搜索一个产品,首先需要找到搜索框和搜索按钮,
接着通过键盘输入要购买物品的关键字,最后点击搜索按钮,提交搜索请求。
正如上述人工的操作步骤一样,我们也希望Appium能模拟我们的动作,然而,Appium并不能理解在搜索框中输入关键或者单价搜索按钮这样的图形化操作。所以需要我们程序化的去告诉Appium如何
定位搜索框和搜索按钮,从而模拟输入和点击的动作。
Appium提供多种元素的定位方法,如:id、name、class、相对定位、Xpath定位、List定位、Uiautomator定位等等……
接下来我们对这几种方法进行一一讲解,并且提供相应的例子。
- PS:元素定位工具我使用的UI Automatorviewer,在这里就不在介绍该工具如何使用了,可以访问我的另一篇博客:https://blog.youkuaiyun.com/px551/article/details/104558672
from appium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
#参数配置
desired_caps={
'platformName':'Android',
'platformVersion':'6.0.1',
'deviceName':'127.0.0.1:21305',
'appPackage':'com.baidu.homework',
'appActivity':'com.baidu.homework.activity.index.IndexActivity',
'automationName': 'Appium',
'noReset':True,
}
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
一.ID 定位
ID属性:本机元素标识符。也就是通过UI Automatorviewer工具查看的resource-id属性;IOS 的 Name。
如上图所示,就可以通过ID属性能定位到用户名的输入框:
driver.find_element_by_id("com.baidu.homework:id/passport_phone_number_input_edit")
根据ID属性来举一个登陆作业帮APP的例子:
def zuoyebang_login(un="zuoyebang",pw="zuoyebang!test"