Appium+python (3) 元素定位(1)

打开问价夹下面的uiautomatorviewer:

夜神模拟器里的App后,回到uiautomatorviewer:

点击左上角的Device Screenshot,这时你的夜神模拟器页面就会显示在这里,右侧就是对应的定位信息了,我们主要依靠右下角的Node Detail信息进行定位。

如果你有selenium的基础,那接下来介绍的基本一致,只是换了个方法而已:

  • text find_element_by_name(u"视频")
  • id find_element_by_resource-id("")
  • class name

使用className获得的view一般不止一个,所以需要遍历得到的views,然后缩写搜索条件获取目标控件

# 获取一个className下的所有控件
buttons = driver.find_elements_by_class_name("")
# 点击第一个元素
buttons.pop(0).click()
# 点击最后一个元素
buttons.pop().click()
buttons.pop(-1).click()
  • accessibility id

这个方法属于appium扩展的定位方法

上图中的content-desc对应的就是accessibility_id

find_element_by_accessibility_id("")

- xpath

find_element_by_xpath("")

android uiautomator

# 注意,text里面必须是字符串,也就是说不能加u
find_element_by_android_uiautomator('new UiSelector().text("娱乐")')

此外,还有

find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_tag_name()

看一段代码:

# coding: utf-8

from appium import webdriver
from time import sleep

desired_caps = {'platformName': 'Android',
                'deviceName': '127.0.0.1:62001',
                'platformVersion': '23',
                'appPackage': 'com.tencent.news',
                'appActivity': 'com.tencent.news.activity.SplashActivity',
                'unicodeKeyboard': True,
                'resetKeyboard': True}
driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)
# 跳过广告
sleep(5)
# 用text定位-点击视频
driver.find_element_by_name(u"视频").click()
# 点击娱乐
driver.find_element_by_android_uiautomator('new UiSelector().text("娱乐")').click()

上面的代码有两种定位方式,其实之前写了好多种,无奈它去乱点,根本不是想要定位的位置,比如我用class定位:

但是那一排的class是相同的,而且不能用find_elements_by_className()加索引的方式进行定位。大家也看到了,我的这个不知道为什么text就是不显示,似乎是应该可以显示的,不知道问题出在哪里

定位方式还有一个xpath,我也很关心这个该怎么用,但是我现在也不知道,不过似乎上面这些已经差不多可以进行用例编写了。至于xpath,看到好多网上说有点不好用,管他呢,大家稍安勿躁,下一节我们再来介绍xpath。

原文发布于微信公众号 - 自动化测试实战(gh_839e78b6ba28)

原文发表时间:2018-01-20

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

微信小程序电商实战-首页(上)

上一篇:微信小程序电商实战-入门篇 嗨,大家好!经过近两周的精心准备终于开始微信小程序电商实战之路喽。那么最终会做成什么样呢?好了,不啰嗦了 我们先看首页长什么...

49770
来自专栏CRPER折腾记

Vue 脱坑记 - 查漏补缺(汇总下群里高频询问的xxx及给出不靠谱的解决方案)

文章内容覆盖范围,芝麻绿豆的破问题都有,不止于vue; 给出的是方案,但不是手把手一字一句的给你说十万个为什么!

59730
来自专栏vue学习

11、组件入门及写个首页头部组件

前言:项目准备工作说了很久,不知道大家学会了没有?今天开始我们开始正式搭建页面,先从首页开始,在搭建页面的过程中,我也会将vue的知识点在其中穿插讲解,但是你最...

13620
来自专栏云飞学编程

Python学习,还在用正则或者bs4做爬虫吗?来试试css选择器吧

之前写的一些爬虫都是用的正则、bs4、xpath做为解析库来实现,如果你对web有所涉及,并且比较喜欢css选择器,那么就有一个更适合的解析库—— PyQuer...

11020
来自专栏hightopo

快速开发基于 HTML5 网络拓扑图应用1

32120
来自专栏Google Dart

AngularDart4.0 英雄之旅-教程-05多组件 顶

AppComponent正在做所有的事情。 一开始,它展示了一个英雄的细节。 然后,它成为一个英雄和英雄细节列表的主/细节形式。 很快就会有新的要求和能力。 您...

11010
来自专栏Albert陈凯

2018-11-07 史上最全Vim快捷键键位图 -- 入门到进阶史上最全Vim快捷键键位图 -- 入门到进阶

本文所有键位图虽然都不是博主原创,但是所有资源均为博主亲自收集整理。如需全文转载,希望尊重原作者和博主的劳动成果,保留原文链接。 本文所有图片为了方便读者使用均...

9110
来自专栏快乐八哥

Angular企业级开发(3)-Angular MVC实现

1.MVC介绍 Model-View-Controller 在20世纪80年代为程序语言Smalltalk发明的一种软件架构。MVC模式的目的是实现一种动态的...

23190
来自专栏熊二哥

Vue快速入门

终于进入国内当前最火的前端框架Vue.js的学习了,最近周边的哥们也开始用该框架做线上项目,闲暇之余,做个快速的了解,重在基础部分。 ? 基础概念 目前在国...

47680
来自专栏Coding迪斯尼

Reactjs+BootStrap开发自制编程语言Monkey的编译器:创建简易的页面IDE

19020

扫码关注云+社区

领取腾讯云代金券