UI测试常用技巧

如何在当前界面中查找第一个ListView中的带有文本属性为Apps的子控件。


UiObjectappItem=newUiObject(newUiSelector()

.className("android.widget.ListView").instance(1)

.childSelector(newUiSelector().text("Apps")));

  如何查找当前显示界面中的取消按钮和确认按钮:

  UiObjectcancelButton=newUiObject(newUiSelector().text("Cancel"));

  UiObjectokButton=newUiObject(newUiSelector().text("OK"));

  查找到的UiObject实例可以在其他测试代码中重用。需要注意的是:每次使用UiObject做操作的时候uiautomator都会在当前屏幕重新查找该控件。

  如下代码uiautomator工具在当前界面查找文本内容为“OK”的控件。如果存在并且可用则模拟用户点击该控件。


if(okButton.exists()&&okButton.isEnabled())

{

okButton.click();

}

  还可以限制仅仅查找特定类型的控件。例如如下代码只查找文本为“Cancel”和“OK”的android.widget.Button类型控件。


UiObjectcancelButton=newUiObject(newUiSelector().text("Cancel")

.className("android.widget.Button"));

UiObjectokButton=newUiObject(newUiSelector().text("OK")

.className("android.widget.Button"));

UiCollection

  代表控件的集合。获取UiCollection的方式和UiObject一样,通过UiSelector查找。UiCollection对应Android系统中的ViewGroup以及子控件。

  如下代码演示如何通过UiSelector来获取包含视频集合的UiCollection。

  UiCollectionvideos=newUiCollection(newUiSelector()

  .className("android.widget.FrameLayout"));

  如果每个视频是放到LinearLayout中的,则可以通过如下方式获取视频的数目:

  intcount=videos.getChildCount(newUiSelector()

  .className("android.widget.LinearLayout"));

  如果需要查找标签为“CuteBabyLaughing”的视频,并点击。则可以通过如下方式:


UiObjectvideo=videos.getChildByText(newUiSelector()

.className("android.widget.LinearLayout"),"CuteBabyLaughing");

video.click();

  同样还可以模拟其他用户操作。例如,模拟选择视频的操作如下:


UiObjectcheckBox=video.getChild(newUiSelector()

.className("android.widget.Checkbox"));

if(!checkBox.isSelected())checkbox.click();

UiScrollable

  代表可滚动的控件。可以用UiScrollable来模拟水平或者垂直滚动的UI元素。如果需要操作的元素在屏幕外需要滚动屏幕才能看到的情况下需要使用UiScrollable。

  例如,下面的代码显示了如何模拟滚动到“Settings”菜单并点击“Abouttablet”菜单的操作。


UiScrollablesettingsItem=newUiScrollable(newUiSelector()

.className("android.widget.ListView"));

UiObjectabout=settingsItem.getChildByText(newUiSelector()

.className("android.widget.LinearLayout"),"Abouttablet");

about.click()

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-28 15:15:30

UI测试常用技巧的相关文章

SharePoint常用技巧

1.网站内容和结构(/_layouts/sitemanager.aspx) 自己使用SharePoint也有一年了,居然没有发现这个页面,鄙视自己一下,才发现这个页对数据进行操作,会方便很多,比如列表中测试数据的批量删除,之前都是在数据行中删除,还经常发现数据行视图不好用的情况,其实,使用这个页里面,右侧点击列表,可以批量删除,方便得很. 其实批量删除也就不算什么了,这个还有更方便的,甚至可以批量复制数据,从A列表中的数据导入到B列表中去,当然如果字段不一样,SharePoint自己会扩展出来缺

UWP开发入门(十四)—— UserControl中Adaptive UI的小技巧

原文:UWP开发入门(十四)-- UserControl中Adaptive UI的小技巧 本篇我们通过绘制一个非常简单的UserControl控件,来分享一下对Adaptive UI的理解及一些图形绘制的技巧. 现在流行的APP都少不了精致的用户头像,首先假设我们需要绘制如下的图形作为默认头像: <UserControl x:Class="AdaptiveUserControl.Circle0" xmlns="http://schemas.microsoft.com/w

Appium在Android UI测试中的应用实践

Android 测试工具与 Appium 简介 Appium 是一个 C/S 架构的,支持 Android/iOS Native, Hybrid 和 Mobile Web Apps 的测试框架,与测试程序通过 Selenum Webdriver 协议通讯.Webdriver 的好处是通过 HTTP RPC 的方式调用 Server 上的过程,编写测试脚本不受语言的限制,无论是 Python, Java, NodeJS 均可以方便的编写测试.本文中将使用 Python 进行编程. 起因是因为市场部

iOS单元测试和UI测试全面解析

编写测试可不是一项迷人的工作;然而,由于测试可以避免使你的宝贝应用程序变成一块充斥错误的大垃圾场,所以编写测试又是一项非常有必要做的工作.如果你正在阅读本文,那么你应当已经知道你应该为您的代码和用户界面编写测试,只是不确定如何在Xcode中编写测试. 也许你已经开发出一个能够工作的应用程序,只是还没有对它进行测试;另一方面,当您扩展该应用程序时,你又想对其任何的更改进行测试.也许你已经写了一些测试,但尚不能确定它们是否是正确的测试.或者,你现在正在开发您的应用程序,并且想随着工作的进展对之进行测

WWDC15 Session笔记 - Xcode 7 UI 测试初窥

Unit Test 在 iOS 开发中已经有足够多的讨论了.Objective-C 时代除了 Xcode 集成的 XCTest 以外,还有很多的测试相关的工具链可以使用,比如专注于提供 Mock 和 Stub 的 OCMock,使用行为驱动测试的 Kiwi 或者 Specta 等等.在 Swift 中,我们可以继续使用 XCTest 来进行测试,而 Swift 的 mock 和 stub 的处理,我们甚至不需要再借助于第三方框架,而使用 Swift 自身可以在方法中内嵌类型的特性来完成.关于这方

VS2010测试功能之旅:编码的UI测试(1)

前言 研究VS2010的自动化测试有一段时间了,在研究的过程中,发现网上的VS2010相关的测试资料十分稀少,这给学习带来比较大的困难.幸运的是,自己因为常用QuickTest Professional做自动化测试,并且对.Net代码比较了解,使得在学习的过程中并不是特别困难,对UI CODED TEST也已经有一定了解.本着与大家交流,共同进步的想法,思考之后,决定写这些随笔,来对VS2010的测试功能做一些探索和总结.希望大家能够多多指教! 自动化测试 自动化测试指软件测试的自动化,软件测试

《BackTrack 5 Cookbook中文版——渗透测试实用技巧荟萃》目录—导读

版权声明 BackTrack 5 Cookbook中文版--渗透测试实用技巧荟萃 Copyright @ Packt Publishing 2012. First Published in the English language under the title PhoneGap Beginner's Guide. All Rights Reserved. 本书由英国Packt Publishing公司授权人民邮电出版社出版.未经出版者书面许可,对本书的任何部分不得以任何方式或任何手段复制和传播

MFC程序设计常用技巧汇总_C 语言

本文实例总结了MFC程序设计常用技巧.分享给大家供大家参考.具体如下: 1.属性页的添加: 创建对话框的类,该类要从CpropertyPage继承:然后在要添加该对话框为属性页的类(头文件)里创建CpropertySheet类的一个对象m_tabsheet和新创建的对话框类的对象m_skatch:最后,在.cpp文件里的OnInitDialog()之类的函数里实现如下代码: 复制代码 代码如下: m_tabsheet.Create(this, WS_CHILD | WS_VISIBLE, 0);

JavaScript提升性能的常用技巧总结【经典】_javascript技巧

本文讲述了JavaScript提升性能的常用技巧.分享给大家供大家参考,具体如下: 1.注意作用域 随着作用域链中的作用域数量的增加,访问当前作用域以外的变量的时间也在增加.访问全局变量总是要比访问局部变量慢,因为要遍历作用域链.  1). 避免全局查找   将在一个函数中会多次用到的全局对象存储为局部变量总是没错的. 2). 避免 with 语句  with会创建自己的作用域,因此会增加其中执行代码的作用域链的长度. 2.选择正确的方法 性能问题的一部分是和用于解决问题的算法或者方法有关的.