专栏首页从零开始学自动化测试appium+python自动化34-获取元素属性

appium+python自动化34-获取元素属性

前言

在做断言的时候,我们往往需要先获取目标元素的某些属性值,拿来判断,比如登录后,如何判断登录成功了呢?可以通过登录后获取账号的名称(元素的text属性)来判断。

一、获取text

``` # coding:utf-8 from appium import webdriver from time import sleep desired_caps = { 'platformName': 'Android', 'deviceName': '127.0.0.1:62001', 'platformVersion': '4.4.2', 'appPackage': 'com.baidu.yuedu', 'appActivity': 'com.baidu.yuedu.splash.SplashActivity', 'noReset': 'true', 'resetKeyboard': 'true', 'unicodeKeyboard': 'true' } driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) # 等主页面activity出现 driver.wait_activity(".base.ui.MainActivity", 10) # 点取消升级 driver.find_element_by_id("com.baidu.yuedu:id/negativeUpgrade").click() # 获取text t1 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").text print(t1) ``` 二、tag_name 1.tag_name实质上是获取class属性 ``` # 获取tag_name t2 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").tag_name print(t2) ```

2.打印结果:android.widget.TextView 三、get_attribute 1.获取content-desc属性,这里注意了,如果content-desc属性为空,那么获取的就是text属性,不为空获取的才是content-desc属性 2.content-desc属性为空,打印结果:书架 ``` # content-desc为空,获取的是text t3 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").get_attribute("name") print(t3) ```

3.content-desc属性不为空,打印结果:百度阅读 ``` # content-desc t4 = driver.find_element_by_id("com.baidu.yuedu:id/fragment_banner").get_attribute("name") print t4 ```

4.id,calss,text属性获取 ``` # id t5 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").get_attribute("resourceId") print(t5) # class t6 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").get_attribute("className") print(t6) # text t7 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").get_attribute("text") print(t7) ``` 5.其它属性获取,注意这里并不是所有的都可以获取,一些标准的属性是可以获取到的 ``` # checkable t8 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").get_attribute("checkable") print t8 # clickable t9 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").get_attribute("clickable") print t9 ```

四、size和location 1.获取size,返回的是字典,如:{'width': 84, 'height': 84} 2.获取location,返回的是字典,如:{'y': 38, 'x': 192} ``` # size t10 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").size print t10 # location t11 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").location print t11 ``` 五、参考代码 ``` # coding:utf-8 from appium import webdriver desired_caps = { 'platformName': 'Android', 'deviceName': '127.0.0.1:62001', 'platformVersion': '4.4.2', 'appPackage': 'com.baidu.yuedu', 'appActivity': 'com.baidu.yuedu.splash.SplashActivity', 'noReset': 'true', 'resetKeyboard': 'true', 'unicodeKeyboard': 'true' } driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) # 等主页面activity出现 driver.wait_activity(".base.ui.MainActivity", 10) # 点取消升级(版本不要升级了) driver.find_element_by_id("com.baidu.yuedu:id/negativeUpgrade").click() # 获取text t1 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").text print(t1) # 获取tag_name t2 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").tag_name print(t2) # content-desc为空,获取的是text t3 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").get_attribute("name") print(t3) # content-desc t4 = driver.find_element_by_id("com.baidu.yuedu:id/fragment_banner").get_attribute("name") print t4 # id t5 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").get_attribute("resourceId") print(t5) # class t6 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").get_attribute("className") print(t6) # text t7 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").get_attribute("text") print(t7) # checkable t8 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").get_attribute("checkable") print t8 # clickable t9 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").get_attribute("clickable") print t9 # size t10 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").size print t10 # location t11 = driver.find_element_by_id("com.baidu.yuedu:id/lefttitle").location print t11 ```

本文分享自微信公众号 - 从零开始学自动化测试(yoyoketang),作者:YOYO

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-12-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Selenium2+python自动化71-多个浏览器之间的切换

    前言 有时候一些业务的功能涉及到多个系统,需要在web系统1打开造一些数据,然后用到某些参数是动态生成的,需要调用web系统2里面的参数。 举个简单例子:在做...

    上海-悠悠
  • Selenium2+python自动化65-js定位几种方法总结

    前言 本篇总结了几种js常用的定位元素方法,并用js点击按钮,对input输入框输入文本 一、以下总结了5种js定位的方法 除了id是定位到的是单个elemen...

    上海-悠悠
  • appium+python自动化56-微信小程序自动化

    最近微信的小程序越来越多了,随之带来的问题是:小程序如何做自动化测试? 本篇以摩拜小程序为例,介绍如何定位小程序里面的元素

    上海-悠悠
  • Python实现邮件发送

        RCPT 标识单个的邮件接收人;常在MAIL命令后面,可有多个rcpt to:

    py3study
  • Unity Package Manager Error的解决方案

    Zoctopus
  • 64000张汽车图片,再也没有理由说做汽车项目没有数据了

    关于汽车的项目很多,比如拍照识车、汽车比价等等,尽管这些项目本身难度不大,但是往往受制于数据集的质量,模型的效果不能很好的发挥。

    大数据文摘
  • 资源 | 从Brain.js到Mind,一文收录11个移动端Javascript机器学习库

    选自blog.bitsrc.io 作者:Jonathan Saring 机器之心编译 参与:程耀彤、黄小天 本文作者在构建 Bit 的过程中探索和尝试了把 Ja...

    机器之心
  • 大数据在营销和销售中的十大应用

    大数据文摘
  • 2月24日数据动态早报| 电商大数据助力中国外贸企业转型升级

    数据动态,让您了解数据新变化、新创造和新价值。 ? ---- 一、通信行业数据动态 1 华为厚积薄发在物联网风口起舞。率先提出无线窄带蜂窝物联网技术,是NB-I...

    陆勤_数据人网
  • java 多线程通信

    wait(0) 0代表永不超时, Object的wait方法会导致当前的线程陷入阻塞状态,直到其他线程notify或notifyAll 才能将其唤醒,或者阻塞时...

    用户7625070

扫码关注云+社区

领取腾讯云代金券