• Appium(二)定位方式


    Appium两种定位方式,一种是继承selenium的定位方式,还是一种是Android uiaumator的定位方式

    (一)、seleium的定位

    1、定位方式主要有以下几种

    • id-》resource-id
    • class_name-》class
    • name-》text
    • accessibility_id-》content_desc
    • xpath

    2、定位方法

    • 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列表

    常用的定位方法基本就是上面的几种,还有一些不怎么常用的就不再列出,如image等,至于上面的xpath等下会单独列出说明

    (二)、Uiaumator定位,这个主要是用到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(".*历$")')

    2、uiaumator滑动

    •  找到第一个可滚动元素,然后找到带有文本“ Tabs”的TextView。“标签”元素将滚动到视图中
    • self.driver.find_element_by_android_uiautomator('new UiScrollable(new UiSelector().scrollable(true).instance(0)).getChildByText(new UiSelector().className("android.widget.TextView"), "Tabs")')

    • scrollIntoView返回滚动到视图中的元素,scrollIntoView允许滚动到任何UiSelector,元素以text中的为准

    • self.driver.find_element_by_android_uiautomator('new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().text("WebView").instance(0));')

    (三)、Xpath,借助于Xpath语法能够更好、更精确的定位到元素

    • 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')]"通过当前元素获取父级元素,再定位里面的控件../表示上一级,以此类推
    • 常用定位差不多就这些
  • 相关阅读:
    Mysql String Functions
    Array JSON
    $(document).ready vs $(window).load vs window.onload
    jquery,返回到顶部按钮
    html5 教程网站
    js,replace() 和 正则表达式(regular expression)
    设置 textarea 默认滑动到底部
    工作常用英语单词整理2
    工作常用英语单词整理1
    javascript,jquery代码规范
  • 原文地址:https://www.cnblogs.com/guoke1001/p/12964513.html
Copyright © 2020-2023  润新知