android自动化测试元素定位,目前发现appium官方的uiautomatorviewer一般的元素定位还行,但好多都找不到。

这个时候,可以考虑selendroid的inspector

官网:http://selendroid.io/inspector.html

使用 E:\APP>java -jar selendroid-standalone-0.17.0-with-dependencies.jar -app app-debug_3.1.3.904.apk

类似的模式打开selendroid纯服务器。

然后是python客户端代码:

#coding=utf-8
'''@author: lhy.yh@qq.com
'''
import unittest
from selenium import webdriver

class FindElementTest(unittest.TestCase):

def setUp(self):
desired_capabilities = {'aut': 'com.tenda.router.app:3.1.3.904'}

#desired_capabilities = {'aut': 'io.selendroid.testapp:0.17.0'}
self.driver = webdriver.Remote(
desired_capabilities=desired_capabilities
)
self.driver.implicitly_wait(30)

def test_find_element_by_id(self):
self.driver.get('and-activity://com.tenda.router.app.activity.Anew.Splash.SplashActivity')

def tearDown(self):
self.driver.quit()

if __name__ == '__main__':
unittest.main()

如果大家不知道:

desired_capabilities = {'aut': 'com.tenda.router.app:3.1.3.904'}

里面的aut参数哪来的,那LZ再啰嗦一下:

1、打开http://localhost:4444/wd/hub/status

2、好了自己找想要的内容appId

3、要想正常运行APP,建议先到安卓系统APP应用卸载的地方,1、先卸载待测软件、2、再卸载selendroid名称的应用

{"value":{"os":{"name":"Windows 7","arch":"x86","version":"6.1"},"build":{"browserName":"selendroid","version":"0.17.0"},"supportedDevices":[{"emulator":false,"screenSize":"(1440, 2560)","serial":"LGD857cfd6ea69","platformVersion":"21","model":"LG-D857","apiTargetType":"google"}],"supportedApps":[{"mainActivity":"io.selendroid.testapp.HomeScreenActivity","appId":"io.selendroid.testapp:0.17.0","basePackage":"io.selendroid.testapp"},{"mainActivity":"io.selendroid.androiddriver.WebViewActivity","appId":"io.selendroid.androiddriver:0.17.0","basePackage":"io.selendroid.androiddriver"}]},"status":0}

特别留意需要使用debug模式,在APP初始化之后,取个断点就可以了。(前提是IDE需要支持DEBUG,例如LZ使用的是wing ide)

然后就打开APP 进入你需要定位的界面:

例如 LZ的:

LZ是想定位到WIFI开始时段、关闭时段需要输入的 4个时间值。例如图中深黑的数字,是一个textfield是可以输入的。

使用XPATH表达式:dr.find_element(:xpath,'//ScrollView/LinearLayout/LinearLayout/RelativeLayout/LinearLayout/NumberPicker\[1\]/CustomEditText').text

即可定位到第一个 17

以此类推

31

dr.find_element(:xpath,'//ScrollView/LinearLayout/LinearLayout/RelativeLayout/LinearLayout/NumberPicker\[3\]/CustomEditText').text

23

dr.find_element(:xpath,'//ScrollView/LinearLayout/LinearLayout/RelativeLayout/LinearLayout/NumberPicker\[4\]/CustomEditText').text

43

dr.find_element(:xpath,'//ScrollView/LinearLayout/LinearLayout/RelativeLayout/LinearLayout/NumberPicker\[6\]/CustomEditText').text

关于XPATH的语法就不多讲,XPATH就是要需要尝试才熟练。

selendroid inspector xpth元素定位记录的更多相关文章

  1. Mac环境下使用Appium Inspector进行元素定位

    一.摘要 本篇博文介绍在Mac系统上使用AppiumI Inspector进行App页面元素定位 二.Finding elements by xpath WebElement digit_9 = dr ...

  2. python+selenium遇到元素定位不到的问题,顺便记录一下自己这次的错误(报错selenium.common.exceptions.NoSuchElementException)

    今天在写selenium一个发送邮件脚本时,遇到一些没有找到页面元素的错误.经过自己反复调试,找原因百度,终于解决了.简单总结一下吧,原因有以下几点: 一:Frame控件嵌套,.Frame/Ifram ...

  3. 初探appium之元素定位(1)

    无论是selenium还是appium,元素定位都是我们开始实现自动化面临的第一个问题.selenium还好,我们可以在浏览器的调试页面进行元素定位还是蛮方便的.那么appium怎么做呢? 我看到很多 ...

  4. Selenium 基本操作--元素定位

    对页面元素进行操作 1.   输入框输入 driver.findElement(By.id("id号")).sendKeys(“输入框输入内容”): 例:

  5. 元素定位(d4-2)

    一,元素定位①优先级:首先选择id,其次选class,再就是根据其他唯一元素,在更加层级过滤定位,根据多属性定位,②首选CSS定位,在选XPATH定位 1.xpath定位 //*   获取当前网页全部 ...

  6. selenium+java二元素定位

    页面元素定位是自动化中最重要的事情, selenium Webdriver 提供了很多种元素定位的方法.  测试人员应该熟练掌握各种定位方法. 使用最简单,最稳定的定位方法. 自动化测试步骤 定位元素 ...

  7. appium---android元素定位

    原文链接:https://www.cnblogs.com/meitian/p/6103391.html 一.常用识别元素的工具 uiautomator:Android SDK自带的一个工具,在tool ...

  8. python3 + selenium 之元素定位

    8种定位方式 定位一个元素 webdriver提供了一系列的对象定位方法,常用的有以下几种 driver.find_element_by_name()--最常用,简单 driver.find_elem ...

  9. appium自动化测试之UIautomatorviewer元素定位

    appium自动化测试之UIautomatorviewer元素定位 标签(空格分隔): uiautomatorviewer元素定位 前面的章节,已经总结了怎么搭建环境,怎样成功启动一个APP了,这里具 ...

随机推荐

  1. Android实例-使用电话拨号器在移动设备上(官方)(XE8+小米2)

    源文地址: http://docwiki.embarcadero.com/RADStudio/XE5/en/Mobile_Tutorial:_Using_the_Phone_Dialer_on_Mob ...

  2. 继承BaseAdapter实现Filterable的adapter类完整示例

    转载:http://www.lai18.com/content/1631130.html 目标:自定义ListView项布局通常需要自己实现Adapter,并通过搜索关键字筛选部分数据.且关键字变长变 ...

  3. MYSQL- 分页存储过程

    工作需要,用到MYSQL的分页功能,在网上找到一个不错的分页存储过程,代码整理了一下! 存储过程代码 CREATE PROCEDURE `sp_hj_splitpage`( in _pagecurre ...

  4. js与java通信

    js 调用java中的接口并传递参数给客户端处理方式: webView.addJavascriptInterface(new NewsDetail() , "newsDetail" ...

  5. .NET加密配置文件connectionStrings节点

    具体的可以参考petshop源码程序. 加密前: <connectionStrings> <add name="SQLProfileConnString" con ...

  6. 【转载】总结一下Android中主题(Theme)的正确玩法

    http://www.cnblogs.com/zhouyou96/p/5323138.html 总结一下Android中主题(Theme)的正确玩法 在AndroidManifest.xml文件中有& ...

  7. Genymotion - 强大好用高性能的 Android 模拟器 (在电脑流畅运行APK安卓软件游戏的利器)

    随着 Android 系统的应用和游戏越来越丰富,甚至有些比起Windows.Mac上的软件更加好用好玩,因此很多人都希望能在电脑上也能玩到安卓的游戏或APP. 我们曾推荐过 BlueStacks,而 ...

  8. MVC4网站发布到windows server 2003服务器

    在windows server 2003上部署MVC4的网站,需要进行以下工作 用VS2013新建项目 在创建项目的时候选择的矿建为.NET Framework4,然后选择[ASP.NET MVC4 ...

  9. file_put_contents() failed to open stream: Permission denied 问题解决

    很长时间没有写PHP了,今天突然有个需求要写一个保存文件的功能. function downloadFile( $url , $savePath = '' ) {     $fileName = ge ...

  10. Codeforces Codeforces Round #319 (Div. 2) B. Modulo Sum 背包dp

    B. Modulo Sum Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/577/problem/ ...