5-appium定位元素5种常用方式

还是使用qq做为测试app,先通过start recording生成python代码:

# This sample code uses the Appium python client
# pip install Appium-Python-Client
# Then you can paste this into a file and simply run with Python
from appium import webdriver

caps = {}
caps["deviceName"] = "e0a92c49"
caps["platformName"] = "Android"
caps["platformVersion"] = "4.4.4"
caps["appPackage"] = "com.tencent.mobileqq"
caps["appActivity"] = "com.tencent.mobileqq.activity.SplashActivity"
#不重置软件,通常用作保持登录状态
caps["noReset"] = True

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
#这里先使用time.sleep,更好的方式是用显式等待。
import time
time.sleep(2)

*******************************
可以把下面的定位方式的代码copy过来,直接执行
*******************************
driver.quit()

下面介绍4种定位方式:

方式1:通过id定位(id精确匹配和模糊匹配都可以)
# 精确匹配id
el2 = driver.find_element_by_id("com.tencent.mobileqq:id/btn_login")
#模糊匹配id
el2 = driver.find_element_by_id("btn_login") 
el2.click()
# driver.find_element_by_xpath("")

方式2:通过class定位
在方式1中我们使用id定位到了登陆,这次我们模拟点击“新用户注册”,并使用class方式定位,由于class属性属于重复属性,也就是说不同的对象的class属性值可能一样,这就有可能在app界面里找到多个匹配的对象,例如(如图):qq登陆和新用户这两个按钮的class属性都是:android.widget.Button。

那么怎么区别这两个按钮呢,实现方式:使用“driver.find_elements_by_class_name”,注意elements用复数形式,取到下标,找到该对象。代码如下:
elements = driver.find_elements_by_class_name("android.widget.Button")
print(elements)
运行结果如下:

由于“新用户”的按钮下标是1,所以我们使用[1]来取到“新用户”按钮
elements = driver.find_elements_by_class_name("android.widget.Button")[1]
elements.click()

方式3:通过xpath定位,模拟登录
element = driver.find_element_by_xpath("//android.widget.Button[@text='登 录']")
element.click()
说明:
使用xpath属性时,推荐使用不受影响的xpath属性,如下图,在本案里,应该使用content-desc属性
方式4:通过accessibility_id定位,模拟登录
element = driver.find_element_by_accessibility_id("请输入QQ号码或手机或邮箱")
element.send_keys('1728731231')


彩蛋:如果执行的时候出现We wanted {"required":["value"]} and you sent ["text","sessionId"]
解决方法1:降级selenium为3.3.1
解决方法2:使用setvalue api代替

方式5:android特有的定位方式,通过ui-automator-selector
element = driver.find_elements_by_android_uiautomator('new UiSelector().text("登 录")')

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值