• Appium基础篇-元素定位


    通过id定位

    通过工具获取到按钮的 resource-id

    driver.find_element_by_id('resource-id')

    实例: driver.find_element_by_id(' com.android.bbkcalculator:id/clear')

    通过class定位

    通过工具获取到按钮的class

    driver.find_element_by_class_name('class')

    实例: driver.find_element_by_class_name(' android.widget.ImageButton ')

    通过text定位

    appium1.5及之后的版本废弃了name属性(如name=百度一下,需要使用uiautomator的定位方式,使用text的内容)

    driver.find_element_by_android_uiautomator("text(中文)")

    实例:driver.find_element_by_android_uiautomator ("text("百度一下")")

    备注:需要确认这个中文是当前页面唯一值,否则还是定位不到,注意写法,不是直接把中文复制进去

    通过xpath定位

    driver.find_element_by_xpath("xpath内容 ")

    实例:driver.find_element_by_xpath("//android.widget.FrameLayout/android.widget.ImageButton[4]")

    以下方式暂时没有用到,如果有问题以后会更改

    通过accessibility_id

    在UI Automator Viewer界面上并没有找到这个字段,这个对应的字段是content-desc

    driver.find_element_by_accessibility_id("accessibility_id")

    没有找到实例,要是自己写自动化的APP碰到了,可以用用

    通过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定位

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

    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")

    四、元素操作

    找到元素后可以对元素进行的操作,例如上面讲的进一步定位元素

    1.click()

    //点击操作

    也可以用tab实现点击操作

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

    2.clear()

    //清空输入框内容

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

    3.send(xx)

    //输入框内输入内容

    driver.find_element_by_id("com.wuba.zhuanzhuan:id/ij").send_keys("test content")

    4.text

    //获得元素的text内容

    print(driver.find_element_by_xpath(" //android.widget.LinearLayout[1]//xxx").text)

    四、总结

    1、Appium跨平台,支持Android和IOS自动化测试。 2、Appium支持多语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure等等 3、支持原生应用,web应用和混合应用 4、仅仅支持UI测试

  • 相关阅读:
    UIDynamicBehavior的简单使用:接球小游戏
    UI控件初始化问题:initWithFrame和initWithCoder、aweakFromNib的执行
    ICP、MRR、BKA优化
    consul运维入门
    crontab问题
    archer运维相关问题
    git安装及错误处理
    galera
    线性回归
    python数据分析
  • 原文地址:https://www.cnblogs.com/wenjing2019/p/11982981.html
Copyright © 2020-2023  润新知