appium+python+ios怎么获取元素属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了appium+python+ios怎么获取元素属性相关的知识,希望对你有一定的参考价值。
参考技术A 如果是这种情况,就考虑其他的定位方法了,肯定有一种能够解决的。有这几种方法,也可以用:
一、
如果xpath一样,id不一样的话,可以通过找id(viewer当中的resource-id),
self.driver.find_element_by_id("com.chanjet.csp.customer:id/workrecord_add_content").send_keys(contextfield)
二、
如果一定要用xpath,看看viewer当中@index是不是有一个是0,有一个是1,一般来说不会重;如果真的重了,通过text可者其他的不一致的项,再试试
self.driver.find_element_by_xpath("//android.widget.TextView[contains(@text,'报价')]")
除了这些,还有以下的找元素的方式,换一换,总有一个能行的
self.driver.find_element_by_class_name('android.widget.ImageView').click()
self.driver.find_element_by_name("新增工作记录").click()
Appium移动端自动化:元素定位方式总结
ClassName
Android:Android的class属性对应ClassName定位方式,ClassName一般都是会重复的,可以通过index来获取需要的元素。(从0开始查找dom树中的同名class属性)
iOS:iOS的type属性对应CLassName定位方式,ClassName一般都是会重复的,可以通过index来获取需要的元素。(从0开始查找dom树中的同名class属性)
# 通过class_name定位,取class内容: driver.find_element_by_class_name("android.widget.ImageView")
ID
Android:Android的resource-id对应ID定位方式,这个id也可能存在重复情况,可以通过index来获取需要的元素。(从0开始查找dom树中的同名resource-id属性)
注意:使用appium-desktop来获取元素时,如果提示有id的定位方式,则可以只接获取,代表唯一。
# 通过id定位,取resource-id的值: driver.find_element_by_id(‘com.manboker.headportrait:id/entry_album_set‘)
XPATH
Android:Android的Xpath定位与PC的XPATH定位大同小异,可以通过相对路径的定位方式定位,区别在于,这里相对路径定位的//后只可以接Android的class属性或*。(//android.widget.Button[@text="登 录"])
iOS:iOS10 以上使用XCUITest框架后,原生框架不支持XPATH,Appium进行了转换,速度很慢不建议使用。
AccessibilityId
Android:Android的content-desc属性对应AccessibilityId定位方式,这个content-desc属性专门为残障人士设置,如果这个属性不为空则推荐使用。
iOS:iOS的label和name属性都对应AccessibilityId定位方式,如果有则推荐使用。
AndroidUIAutomator:Android的源生测试框架的定位方式,定位速度快。推荐使用牢记常用的几种。
# 这个在运行时,调用的是Android自带的UI框架UiAutomator的Api # 介绍几个简单常用的,text、className、resource-id # text # 匹配全部text文字 driver.find_element_by_android_uiautomator(‘new UiSelector().text("手机号")‘) # 包含text文字 driver.find_element_by_android_uiautomator(‘new UiSelector().textContains("机")‘) # 以text什么开始 driver.find_element_by_android_uiautomator(‘new UiSelector().textStartsWith("手")‘) # 正则匹配text driver.find_element_by_android_uiautomator(‘new UiSelector().textMatches("^手.*")‘) # className driver.find_elements_by_android_uiautomator(‘new UiSelector().className("android.widget.TextView")‘) # classNameMatches driver.find_elements_by_android_uiautomator(‘new UiSelector().classNameMatches("^android.widget.*")‘) # resource-id、resourceIdMatches driver.find_element_by_android_uiautomator(‘new UiSelector().resourceId("com.syqy.wecash:id/et_content")‘) # description driver.find_element_by_android_uiautomator(‘new UiSelector().description("S 日历")‘) # descriptionStartsWith driver.find_element_by_android_uiautomator(‘new UiSelector().descriptionStartsWith("日历")‘) # descriptionMatches driver.find_element_by_android_uiautomator(‘new UiSelector().descriptionMatches(".*历$")‘)
iOSPredicateString
仅支持iOS10以上,可以多个属性同时定位,推荐。(替代XPATH)
driver.find_elements_by_ios_predicate("label == ‘登录‘") driver.find_elements_by_ios_predicate("type=‘XCUIElementTypeOther‘ and name=‘联系人,标签, 第2个按钮,共3个‘")
iOSUIAutomation
iOS9.3以下使用,现在已经废弃,iOSPredicateString代替了iOSUIAutomation
以上是关于appium+python+ios怎么获取元素属性的主要内容,如果未能解决你的问题,请参考以下文章
appium+python自动化34-获取元素属性get_attribute