• APP元素定位和操作


    webdriver 提供了八种元素定位方法:

    在 Python 语言中对应的定位方法如下:
    find_element_by_id()
    find_element_by_name()
    find_element_by_class_name()
    find_element_by_tag_name()
    find_element_by_link_text()
    find_element_by_partial_link_text()
    find_element_by_xpath()
    find_element_by_css_selector()
    Appium 完全继承了 WebDriver 中所定义的这些方法,除此之外对其进行了扩展,以便适合移动端对象的定位与操作 

    定位详解

    1.常用定位方式:

    通过id定位

    (取resource-id的值):

    driver.find_element_by_id("com.wuba.zhuanzhuan:id/azo")

    也可以直接用id后面的内容driver.find_element_by_id("azo")

    通过class_name定位

    (取class的内容)

    driver.find_element_by_class_name("android.widget.RelativeLayout")

    通过xpath定位

    (取xpath得内容)

    driver.find_element_by_xpath("//android.widget.LinearLayout[1]/android.widget.XXX")

    通过text定位

    (需要使用uiautomator的定位方式,使用text的内容)

    driver.find_elements_by_android_uiautomator("new UiSelector().text("+关注")")

    使用这里需要注意一下,通过text定位的结果是个list,不能直接click。所以如果要点击需要取数组的值,比如下面是点击找到的第一个元素

    driver.find_elements_by_android_uiautomator("new UiSelector().text("+关注")")[0].click()

    通过css_selector定位(webview)

    只适用于webview的html页面,继承自webdriver,与pc版本的UI测试一致

    driver.find_element_by_css_selector()

    通过link_text定位(webview)

    只适用于webview容器中的html页面,继承自webdriver,与pc版本的UI测试一致

    driver.find_element_by_link_text()

    通过name定位

    web view容器中的html页面可以用name定位,native并没有name属性

    driver.find_element_by_name()

      

    2.定位元素的另一种写法:find_element(by,value)

    find_element_by_方式(value)实际调用的都是find_element(by,value)

    需要导入这个包:from selenium.webdriver.common.by import By

    例如:定位id为ag2的元素

    方式一:driver.find_element_by_id("ag2”)

    方式二:driver.find_element(By.ID,"ag2")

    这个操作的好处是可以直接把操作的by和value放到一个元组里,然后调用通用方法来传参获得元素结果

    cateid=(By.ID,"ag2")

    driver.find_element(*cateid).click()

    by的操作可以是:

    By.ID   相当于by_id

    By.CLASS_NAME  相当于by_class_name

    By.XPATH   相当于by_xpath

    By.NAME   相当于by_name

    By.TAG_NAME   相当于by_tag_name

    By.CSS_SELECTOR  相当于by_css_selector

    By.LINK_TEXT  相当于by_link_text

    3.find_elements_by_定位方式(value)返回元素数组

    用法与find_element_by_方式(value)一致,但是返回一个数组。可以通过数组的索引来访问具体的某个结果

    例如:通过class_name定位到多个元素,我想点击第一个元素

    driver.find_elements_by_class_name("android.widget.RelativeLayout”)[0].click()

    4.返回元素数组的另一种写法:find_elements(by,value)

    用法与find_element(by,value)一致,但是返回一个数组。可以通过数组的索引来访问具体的某个结果

    例如:通过class_name定位到多个元素,我想点击第一个元素

    driver.find_elements(By.CLASS_NAME,"android.widget.RelativeLayout”)[0].click()

    5.通过元素定位元素

    可以先找到某个元素,然后再进一步定位元素

    find_element_by_class_xpath(“xxx”).find_element_by_name(“yyy")

  • 相关阅读:
    理解Fragment生命周期
    嵌入式操作系统内存管理有哪几种,各有何特性
    laravel的auth用户认证的例子
    laravel验证器例子
    laravel加载js和css等资源
    laravel的blade模板的布局嵌套
    laravel的phpstorm插件laravel-ide-helper
    laravel开启调试模式
    laravel的中间件demo
    laravel路由定义
  • 原文地址:https://www.cnblogs.com/666666pingzi/p/10103535.html
Copyright © 2020-2023  润新知