幽沉谢世事,俯默窥唐虞。这篇文章主要讲述Appium定位方式相关的知识,希望能为你提供帮助。
Appium两种定位方式,一种是继承selenium的定位方式,还是一种是Android
uiaumator2的定位方式
(一)、seleium的定位
1、定位方式主要有以下几种
- id-》resource-id
- class_name-》class
- name-》text
- accessibility_id-》content_desc
- xpath
- self.driver.find_element(),参数是元祖,如(By.XPATH,"//*[@text="XXX"]"),还可以为By.ID,By.NAME,By.CLASS_NAME,By.CSS_SELECTOR(这个主要用于webview的定位),返回的是一个WebDriver对象
- self.driver.find_elements(),参数是元祖,如(By.XPATH,"//*[@text="XXX"]"),还可以为By.ID,By.NAME,By.CLASS_NAME,By.CSS_SELECTOR(这个主要用于webview的定位),返回的是一个WebDriver的list列表
- self.driver.find_element_by_id()通过元素ID定位,返回的是一个WebDriver对象
- self.driver.find_elements_by_id()通过元素ID定位,返回的是一个WebDriver的list列表
- self.driver.find_element_by_name()通过元素的text定位,返回的是一个WebDriver对象
- self.driver.find_elements_by_name()通过元素的text定位,返回的是一个WebDriver的list列表
- self.driver.find_element_by_class_name()通过元素的class定位,返回的是一个WebDriver对象
- self.driver.find_elements_by_class_name()通过元素的class定位,返回的是一个WebDriver的list列表
- self.driver.find_element_by_xpath()通过xpath定位,返回的是一个WebDriver对象
- self.driver.find_elements_by_xpath()通过xpath定位,返回的是一个WebDriver的list列表
- self.driver.find_element_by_css_selector()通过css定位,这个用于对webview,h5的测试,返回一个WebDriver对象
- self.driver.find_elements_by_css_selector()通过css定位,这个用于对webview,h5的测试,返回一个WebDriver的liest列表
【Appium定位方式】(二)、Uiaumator2定位,这个主要是用到Android提供的uiaumator2框架的定位方式,定位方式基本和selenium一样,主要是定位方法不同,具体如下
1、定位方法
- 匹配全部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(".*历$")‘)
- xpath教程:https://www.runoob.com/xpath/xpath-syntax.html
- //*[@resource-id=‘com.xueqiu.android:id/user_profile_icon‘ and @class=‘android.widget.ImageView‘]
- //*[contains(@resource-id, ‘user_profile_icon‘) and contains(@class, ‘Image‘)]
- //*[@text=‘基金‘ and contains(@resource-id, ‘button‘)]
- //*[@text=‘基金‘ and @index=‘1‘]
- (//*[@text=‘基金‘])[1]//[contains(@resource-id,‘buttons_container‘)]//[@text=‘基金‘]
- "//*[contains(@text,‘"+stock_type+"‘)]/../../..//*[contains(@resource-id,‘current_price‘)]"通过当前元素获取父级元素,再定位里面的空间../表示上一级,以此类推
- 常用定位差不多就这些
推荐阅读
- Appium环境安装
- .NetCore 3.1 Dapper
- Android基础—— 自定义RecyclerView内部控件的监听器
- Android SP的具体内容
- 魅族16s 使用ADB禁用系统APP+关闭系统应用广告 详细教程
- Mac OS app 用 StoryBoard开发的一点感想
- ERROR: for pigfarm-appCannot start service pigfarm: OCI runtime create failed: container_linux.go:
- 安卓和Unity线程共享context
- android开发Activity启动流程简单记录方便搜索以及回顾