标签: ui-automation

远程虚拟机上的自动UI测试策略

我正在使用TeamCity进行CI构建,并且我想在Windows XP和Windows 7虚拟机上设置第二个用于运行自动UI测试的构建.

我想构建的工作方式如下:

  1. 编译,运行单元测试等
  2. 使用WiX准备MSI
  3. 将MSI复制到目标测试计算机
  4. 远程执行MSI
  5. 将测试线束代码复制到远程机器
  6. 运行测试
  7. 建立完成

自动UI测试是使用NUnit编写的,需要直接在测试虚拟机上运行(它们无法远程运行).重要的是,如果测试失败,它将出现在TeamCity构建日志中,并且构建失败.我宁愿不在任何一个测试虚拟机上安装VS或TeamCity构建代理.

似乎大多数情况下应该可以使用psexec.exe.有什么替代方案(最好是开源的)我应该看一下吗?

teamcity nunit automated-tests psexec ui-automation

15
推荐指数
1
解决办法
4767
查看次数

AutomationProperties.Name VS x:名称

AutomationProperties.Name和之间的"CodedUI测试构建器"没有区别x:Name.但第一个可以覆盖第二个.此外,AtomationProperties.Name支持数据绑定,x:Name当然不支持.

我们知道如果您使用MVVM模式,最好只x:Name在需要时使用.

所以应该AutomationProperties.Name优先考虑x:Name

.net silverlight wpf accessibility ui-automation

15
推荐指数
1
解决办法
6929
查看次数

UIATarget.setLocationWithOptions课程不适用

我试图通过UI Automation自动化用户的路径.理想情况下,a中的用户位置MKMapView将根据我在自动化脚本中表达的路标列表进行更新:

var target = UIATarget.localTarget();

var waypoints = [
    {location: {latitude: 37.33170, longitude: -122.03020}, options: {course: 180}},
    {location: {latitude: 37.33170, longitude: -122.03022}, options: {course: 180}},
    {location: {latitude: 37.33170, longitude: -122.03025}, options: {course: 180}},
    {location: {latitude: 37.33170, longitude: -122.03027}, options: {course: 180}},
    {location: {latitude: 37.33170, longitude: -122.03030}, options: {course: 180}},
    {location: {latitude: 37.33170, longitude: -122.03032}, options: {course: 180}},
    {location: {latitude: 37.33170, longitude: -122.03035}, options: {course: 180}},
    {location: {latitude: 37.33170, longitude: -122.03037}, options: {course: 180}},
    {location: {latitude: 37.33170, longitude: …
Run Code Online (Sandbox Code Playgroud)

javascript core-location ui-automation mapkit ios

15
推荐指数
1
解决办法
812
查看次数

Android Espresso Ui测试验证ActionPage的标签文本

我正在尝试使用Espresso测试ActionPage的文本.但是,当我运行Ui Automation Viewer时,我可以看到ActionPage显示为View而不是ActionView,它没有TextView.

我试过像这样检查ActionLabel文本,但这不起作用:

onView(withClassName(equalToIgnoringCase("android.support.wearable.view.ActionLabel"))).check(matches(withText("MyText")));
Run Code Online (Sandbox Code Playgroud)

我有一个我的ActionPage的ID,所以我可以找到它onView(withId(R.id.actionPage))但我不知道如何访问它的孩子来获取ActionLabel文本.我尝试编写自定义匹配器,但这也不起作用:

onView(withId(R.id.actionPage)).check(matches(withChildText("MyText")));

static Matcher<View> withChildText(final String string) {
        return new BoundedMatcher<View, View>(View.class) {
            @Override
            public boolean matchesSafely(View view) {
                ViewGroup viewGroup = ((ViewGroup) view);
                //return (((TextView) actionLabel).getText()).equals(string);
                for(int i = 0; i < view.getChildCount(); i++){
                    View child = view.getChildAt(i);
                    if (child instanceof TextView) {
                        return ((TextView) child).getText().toString().equals(string);
                    }
                }
                return false;
            }

            @Override
            public void describeTo(Description description) {
                description.appendText("with child text: " + string);
            }
        };
    }
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我,ActionLabel似乎没有自己的id,它不是TextView ...我怎么能检查它里面的文字?

+------>FrameLayout{id=-1, visibility=VISIBLE, width=320, height=320, …
Run Code Online (Sandbox Code Playgroud)

android ui-automation android-testing android-espresso

15
推荐指数
1
解决办法
1996
查看次数

如何自动测试iOS和Android应用程序的功能?

我必须定期测试电影租赁网站的可用性和功能.我写了一个Windows程序,它能够根据脚本自动化Web浏览器,所以这个任务基本上解决了.现在我必须自动化此Web应用程序的移动版本:原生iOS应用程序和原生Android应用程序.

这些应用程序是封闭源代码,因此无法以任何方式进行修改.我认为测试应用程序应该部署在测试设备(iPhone,iPad,Galaxy Tab,Galaxy S II)上,但我必须能够远程控制它.我的意思是,我想在测试设备和PC之间建立连接,将测试脚本从PC上传到设备,运行它们,然后将测试结果下载到PC.测试脚本应启动要测试的应用程序,操纵其GUI(填充编辑框,按钮等),并以某种方式跟踪其响应,例如通过分析GUI(某些GUI元素的存在,其标题等) ,分析屏幕截图和/或检查IP数据包.

我为Windows编写了许多类似的测试程序:我使用了ShellExecute,PostMessage,FindWindow,WinPcap库等,所以我知道这样的程序应该如何工作.但由于我从未编写过移动操作系统的应用程序,我甚至不知道iOS和Android是否有类似的API和库.

我想知道从哪里开始,我的意思是,可以使用哪些SDK和开发人员工具来编写这样的应用程序.我也对商业解决方案感兴趣.我真的很感激任何帮助.

android packet-capture ui-automation ios galaxy

14
推荐指数
1
解决办法
4931
查看次数

Android集成测试:Robotium还是UIAutomator?

我想为Android应用程序设置集成测试,我想知道什么是更好的:Robotium或最近推出的uiautomator.

我以前有使用Robotium的经验,这个框架对于集成测试来说非常棒.但最近推出的uiautomator看起来也不错.

目前我看到uiautomator有几个限制:

  • 没有xml测试报告
  • 没有兼容性(仅适用于4.1+)
  • 没有Eclipse支持,这意味着很多控制台工作

另一方面,此工具允许您摆脱测试中的应用程序沙箱,并且它独立于程序包,因此可以一起测试多个应用程序.

另外我知道用Maven,Robotium和像Jenkins这样的CI进行设置是相当容易的,但是我不确定uiautomator是否那么容易.

我想问一下uiautomator还有其他陷阱吗?或者最好坚持使用Robotium?

android ui-automation robotium android-testing

14
推荐指数
0
解决办法
4480
查看次数

Selenium是慢的还是我的代码错了?

所以我试图使用Python登录Quora,然后刮掉一些东西.

我正在使用Selenium登录该网站.这是我的代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get('http://www.quora.com/')

username = driver.find_element_by_name('email')
password = driver.find_element_by_name('password')

username.send_keys('email')
password.send_keys('password')
password.send_keys(Keys.RETURN)

driver.close()
Run Code Online (Sandbox Code Playgroud)

现在的问题是:

  1. 找到并填写登录表单需要大约4分钟,这非常缓慢.我能做些什么来加快这个过程吗?

  2. 登录时,如何确保没有错误?换句话说,我如何检查响应代码?

  3. 如何用硒保存饼干,以便我可以在登录后继续抓取?

  4. 如果没有办法让硒更快,那还有其他的登录方式吗?(Quora没有API)

python selenium http ui-automation selenium-webdriver

14
推荐指数
2
解决办法
2万
查看次数

Selenium:从文件系统拖放到WebDriver?

我必须测试一个Web应用程序,其中包含一个用于从本地文件系统上载文件的拖放区域.我的测试环境基于C#.

对于我使用过Selenium的自动化测试,但是无法从文件系统中拖动文件.上传区域是div标签(无input标签).那么最好的方法是什么?AutoIt(可以放入网络浏览器)吗?Sikuli?

c# selenium ui-automation

14
推荐指数
2
解决办法
6353
查看次数

从视频游戏截图中尽可能多地找到文本的最佳方法是什么?

我正在尝试使用tesseract ocr工具从视频游戏中提取ocr文本(我正在预处理屏幕截图并将它们传递给命令行工具tsv输出并解析它).

我想将它用于测试自动化,与硒网测试不同.那是我希望能够等待元素出现而不是睡觉和点击按钮(主要是菜单).

为了能够做到这一点,我需要能够始终如一地找到相同的按钮文本,并在一系列视频游戏中找到尽可能多的文本.为了抽象,我更喜欢每个游戏的预处理/ tesseract选项是相同的.

我可以添加每个游戏中遇到的每个单词的字典,但我不愿意.

我有一个设置,我可以测试预处理/ tesseract选项的许多不同组合,并查看结果的单词.

我已经尝试将屏幕截图(70-90 dpi)吹了5次,并在将其传递给tesarect之前将其设置为灰度.

我可以使用哪些其他技术来提高结果的数量和准确性?我应该看哪些tesseract旋钮?我可以添加任何其他有用的预处理吗?

PS我发现,如果我将图片放大到两倍长/宽,tesseract似乎因为图像的内存耗尽而爆炸.有静态限制吗?我可以找到它,所以我可以炸掉最大尺寸附近的图像吗?我可以调整吗?

python ocr automated-tests tesseract ui-automation

14
推荐指数
1
解决办法
2283
查看次数

寻找GtkWidget的孩子

我需要能够以编程方式探索GTK GUI的结构.我有GtkWidget,我想找到那个小部件的任何孩子.现在我知道GtkContainer有一个查找子项的功能,而GtkContainer是从GtkWidget派生的.

无论如何我可以检查一个小部件是否是一个GtkContainer,然后执行演员表?如果没有,有没有其他方式我可以发现GtkWidget是我的孩子?

gtk ui-automation

13
推荐指数
2
解决办法
9188
查看次数