zoukankan      html  css  js  c++  java
  • Appium Python 五:元素定位

    总结

    单个元素定位:

    driver.find_element_by_accessibility_id(id)
    driver.find_element_by_android_uiautomator(uia_string)
    driver.find_element_by_class_name(name)
    driver.find_element_by_css_selector(css_selector)
    driver.find_element_by_id(id_)
    driver.find_element_by_ios_predicate(predicate_string)
    driver.find_element_by_ios_uiautomation(uia_string)
    driver.find_element_by_link_text(link_text)
    driver.find_element_by_name(name)
    driver.find_element_by_partial_link_text(link_text)
    driver.find_element_by_tag_name(name)
    driver.find_element_by_xpath(xpath)

    多个元素定位:

    driver.find_elements_by_accessibility_id(id)
    driver.find_elements_by_android_uiautomator(uia_string)
    driver.find_elements_by_class_name(name)
    driver.find_elements_by_css_selector(css_selector)
    driver.find_elements_by_id(id_)
    driver.find_elements_by_ios_predicate(predicate_string)
    driver.find_elements_by_ios_uiautomation(uia_string)
    driver.find_elements_by_link_text(text)
    driver.find_elements_by_name(name)
    driver.find_elements_by_partial_link_text(link_text)
    driver.find_elements_by_tag_name(name)
    driver.find_elements_by_xpath(xpath)

    其他:

    还有两个私有的方法:

    driver.find_element(by, value)

    driver.find_elements(by, value)

    单个元素定位和多个元素定位的区别就是,单个元素定位返回是单个元素,多个元素定位返回的是包含多个元素的一个列表。

    这里其他部分的私有方法,因为属于私有的,一般不直接使用。

    详细介绍

    1. find_element_by_id

    用法:通过元素id来查找元素

    示例:driver.find_element_by_id('com.android.calculator2:id/digit8')

    这里元素id和 UIAutomatorView 中该元素的 resource id是一致的。

    这里需要注意的是,Android 4.3 以上系统才会有 resource id。我尝试过 Android 4.2.2系统,结果resource id这里一直是空。

    image

    2. find_element_by_accessibility_id(id)

    示例:driver.find_element_by_accessibility_id("delete")

    这里的accessibility id 跟 UIAutomatorView 中该元素的 content-desc 是一致的。

    image

    3. find_element_by_name(name)

    用法:通过元素 name 来查找元素

    示例:driver.find_element_by_name("Create a new contact")

    这里的name跟 UIAutomatorView 中该元素的 Text是一致的。

    需要注意的是,最好不要用这种定位方法,因为 Appium v1.0 已经不建议使用通过name进行定位的方式。

    image

    4. find_element_by_class_name(name)

    用法:通过元素class name来查找元素

    示例:driver.find_element_by_class_name("android.widget.Button")

    这里的class name跟 UIAutomatorView 中该元素的 class 是一致的。

    需要注意的是,由于 class name不是唯一的,所以可能存在一个页面上有多个元素具有相同的class name。

    image

    5. find_element_by_xpath(xpath)

    用法:通过元素xpath来查找元素

    示例:driver.find_element_by_xpath("//android.widget.Button[@text='8']")

    通过xpath进行定位的好处是,比较绝对,任何一个元素都可以通过xpath进行定位。

    原始的uiautomatorView是看不到 xpath这个属性的,网上有扩展uiautomatorView使其直接显示xpath的教程。

    可以直接下载扩展版的 LazyUiAutomatorViewer:自动化测试中级篇——LazyUiAutomatorViewer插件开发和使用说明

    扩展版本的LazyUiAutomatorViewer可以看到最下方有xpath属性。当然如果熟悉xpath语法,自己也可以直接通过层次关系写出元素的xpath。

    image

    6. find_element_by_android_uiautomator(uia_string)

    用法:通过 UiAutomator 中的定位来进行定位

    示例:driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.android.calculator2:id/digit8")')

    这里可以通过UiSelector()的多种方式进行定位,上面只是举例采用了 resourceId而已。

    image

    其他定位方式

    find_element_by_css_selector(css_selector)

    find_element_by_tag_name(name)

    find_element_by_link_text(link_text)

    find_element_by_partial_link_text(link_text)

  • 相关阅读:
    第8月第15天 app支持后台播放
    第8月第12天 python json.dumps danmu
    第7月第27天 c++11 boost
    第7月第26天 iOS httpserver
    第7月第25天 xcode bundle calayer动画
    我曾七次鄙视自己的灵魂
    learning shell display alert function(5)
    learning armbian steps(6) ----- armbian 源码分析(一)
    learning scala 数组和容器
    learning scala ide tools install
  • 原文地址:https://www.cnblogs.com/miniren/p/7365885.html
Copyright © 2011-2022 走看看