标签: ui-automation

用于Mac OS X(Cocoa)应用程序的自动UI测试工具

是否有任何开源免费工具可用于Mac OS X(Cocoa)应用程序的自动UI测试?到目前为止,我已经看到了[Squish]和[EggPlant]等商业工具.我读过的唯一免费工具是使用UIAutomationAutomator.有没有人有这些工具的经验?我应该考虑的其他选择吗?

提前致谢.

macos cocoa ui-automation

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

当我运行我的Android UIAutomator代码时,它显示错误

当我运行我的Android UIAutomator代码时,它显示以下错误.

INSTRUMENTATION_RESULT:shortMsg = java.lang.RuntimeException
INSTRUMENTATION_RESULT:longMsg = com.android.ui.testing
INSTRUMENTATION_CODE:0

我刚刚运行了developer.android.com中给出的示例代码
如何解决此错误?

日志附在下面:

01-05 01:07:53.559: D/AndroidRuntime(5712): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
01-05 01:07:53.559: D/AndroidRuntime(5712): CheckJNI is ON
01-05 01:07:53.559: E/AndroidRuntime(5712): cannot open customer xml file
01-05 01:07:53.559: E/AndroidRuntime(5712): /system/csc/customer.xml can't open file
01-05 01:07:53.564: D/AndroidRuntime(5712): readGMSProperty: start
01-05 01:07:53.564: D/AndroidRuntime(5712): readGMSProperty: already setted!!
01-05 01:07:53.564: D/AndroidRuntime(5712): readGMSProperty: end
01-05 01:07:53.589: D/dalvikvm(5712): Trying to load lib libjavacore.so 0x0
01-05 01:07:53.599: D/dalvikvm(5712): Added shared lib libjavacore.so 0x0
01-05 01:07:53.609: D/dalvikvm(5712): Trying to load …
Run Code Online (Sandbox Code Playgroud)

android ui-automation android-testing

13
推荐指数
1
解决办法
5795
查看次数

在文本编辑器中支持插入符号移动的IAccesible接口的正确解决方案是什么?

我想从头开始实现一个支持IAccessible接口的文本编辑器.我正在使用MFC和Win32 API.

当标记文本编辑器(如记事本)中的插入符号位置发生变化时,插入符号移动的相应字母,单词或行将由Narrator,JAWS等客户端工具发音.我不知道如何实现此功能.我搜索互联网并阅读MSDN文档.

我在http://msdn.microsoft.com/en-us/library/dd317978.aspxhttp://msdn.microsoft.com/en-us/library/dd373892.aspx上读到客户端通过AccessibleObjectFromWindow方法请求插入符号从OS,OS将WM_GETOBJECT发送到应用程序.WM_GETOBJECT消息在相应的窗口回调函数中接收,但是插入符号移动事件的hWnd为NULL.我检查了线程消息队列,但是在线程消息队列中根本没有收到WM_GETOBJECT.

一种方法虽然有效,但不是正确的解决方案

NotifyWinEvent( EVENT_OBJECT_NAMECHANGE, hwnd, OBJID_CLIENT, CHILDID_SELF )
Run Code Online (Sandbox Code Playgroud)

当插入符被用户移动时 当客户端要求更改名称时,我会返回与插入符号移动相关的相应文本.

HRESULT  CMyEditor::get_accName(VARIANT varChild, BSTR *pszName)
{
   *pszName = SysAllocString( L"CORESPONDING TEXT TO THE CARET MOVEMENT" );
   return S_OK;
}
Run Code Online (Sandbox Code Playgroud)

windows winapi mfc iaccessible ui-automation

13
推荐指数
1
解决办法
1186
查看次数

如何使用AutoIt或Windows UI Automation单击应用程序中的按钮

设置环境:

我正在使用vb.net开发一个带有.NET Framework 4的Windows窗体应用程序.


我的目标:

  1. 打开calculator.exe使用Process.Start
  2. 使用所有vb.net代码,可以单击 5 + 5 =

我不想使用SendKeys作为方法.


经过研究,这个链接提供了一个良好的开端:

本教程(用C#编写)与我尝试使用vb.net非常相似:


有人可以提供一个关于如何接近这个的指针吗?我真的很感激.

vb.net autoit ui-automation

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

运行UI在设备上测试xcode 7

我可以在物理设备上执行UI测试吗?我已经尝试了一些目标/方案的方法/组合,但我无法在设备上运行它,我也没有得到任何错误.

automation ui-automation ios xcode7 xcode-ui-testing

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

在UI automator查看器错误获取设备屏幕截图中,原因:错误无法连接到adb.检查adb是否安装正确

当我点击UI Automator查看器 - >设备屏幕截图抛出错误无法连接到adb.检查adb是否安装正确.

我正在尝试运行Appium.我能够在模拟器中加载apk,由于adb连接错误而卡在UI Automator查看器上.

android ui-automation android-emulator

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

检查元素是否存在python selenium

我正在尝试找到元素

element=driver.find_element_by_partial_link_text("text")
Run Code Online (Sandbox Code Playgroud)

在Python selenium中,元素并不总是存在.是否存在快速行以检查它是否存在并在错误消息不存在时获取NULL或FALSE代替错误消息?

python selenium webdriver ui-automation selenium-webdriver

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

其父级被隐藏的访问元素 - cypress.io

问题在标题中给出,即访问其父项被隐藏的元素.问题是,根据cypress.io文档 :

一个元素被认为是隐藏的,如果:

  • 它的宽度或高度为0.
  • 它的CSS属性(或祖先)是visibility:hidden.
  • 它的CSS属性(或祖先)是display:none.
  • 它的CSS属性是位置:固定,它是屏幕外或掩盖.

但是我正在使用的代码要求我单击其父级被隐藏的元素,而元素本身是可见的.

因此,每次我尝试单击该元素时,都会引发错误读取:

CypressError:超时重试:预期'<mdc-select-item #mdc-select-item-4.mdc-list-item>'为'可见'

此元素'<mdc-select-item #mdc-select-item-4.mdc-list-item>'不可见,因为其父元素'<mdc-select-menu.mdc-simple-menu.mdc-select__menu>'有CSS属性:'display:none'

在此输入图像描述

我正在使用的元素是一个dropdown item写的pug.该元素是angular-mdc-web中定义的组件,它使用mdc-select下拉菜单mdc-select-item及其元素(项),这是我必须访问的.

类似结构的示例代码:

//pug
mdc-select(placeholder="installation type"
            '[closeOnScroll]'="true")
    mdc-select-item(value="false") ITEM1
    mdc-select-item(value="true") ITEM2
Run Code Online (Sandbox Code Playgroud)

在上面,ITEM1是我必须访问的元素.我这样做cypress.io如下:

//cypress.io
// click on the dropdown menu to show the dropdown (items)
cy.get("mdc-select").contains("installation type").click();
// try to access ITEM1
cy.get('mdc-select-item').contains("ITEM1").should('be.visible').click();
Run Code Online (Sandbox Code Playgroud)

试过{force:true}强迫项目点击,但没有运气.尝试使用{enter}父按钮上的按键选择项目mdc-select,但再次没有运气,因为它抛出:

CypressError:cy.type()只能在textarea或:text上调用.您的主题是:<mdc-select-label class ="mdc-select__selected-text">选择... </ mdc-select-label>

也尝试使用该select命令,但它不可能,因为赛普拉斯引擎无法将元素识别为 …

javascript ui-automation pug angular cypress

12
推荐指数
1
解决办法
6179
查看次数

与该项目不兼容的包类型 DotnetPlatform

我在一个框架项目中使用 UIAutomationClient.dll,我正在将其转移到 Core。这只适用于 Windows,所以没问题。但我需要以可以在不同的 Windows 机器上运行的方式引用它。有一个 nuget 包用于此,评论说不应该直接引用它。那么我怎样才能得到它呢?如果我继续选择它,我会收到错误:

与该项目不兼容的包类型 DotnetPlatform

请注意:这是一个控制台应用程序,它执行一些 UI 自动化操作。它不是桌面应用程序,也不是 WPF。

在此输入图像描述

ui-automation nuget .net-core

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

一段时间后,UI自动化事件在监视应用程序后停止接收,然后在一段时间后重新启动

我们正在使用Microsoft的UIAutomation框架来开发一个监视特定应用程序事件的客户端,并以不同的方式响应它们.我们已经开始使用该框架的托管版本,但由于延迟问题,转移到UIACOMWrapper包含的本机版本.在我们(大规模)WPF应用程序中出现更多性能问题后,我们决定将其移至单独的终端应用程序(通过UDP将事件传输到我们的WPF应用程序),这似乎解决了所有性能问题.唯一的问题是,似乎每隔几分钟,TabSelection,StructureChanged,WindowOpened和WindowClosed的事件就会被捕获几分钟.令人惊讶的是,当发生这种情况时,仍会接收和处理PropertyChanged事件.我将发布我们的事件监视器的相关代码,但这可能无关紧要,因为我们在使用Microsoft自己的AccEvent实用程序时已经看到类似的行为.我不能发布受监控应用程序的代码,因为它是专有的和保密的,我可以说它是一个承载WPF窗口的WinForms应用程序,也非常庞大.有没有人在使用UI自动化框架时看到过这种行为?感谢您的时间.

这是监视器代码(我知道事件处理在这里的UI自动化线程上,但是将它移动到专用线程并没有改变任何东西):

        public void registerHandlers()
    {
        //Register on structure changed and window opened events 
        System.Windows.Automation.Automation.AddStructureChangedEventHandler(
            this.getMsAutomationElement(), System.Windows.Automation.TreeScope.Subtree, this.handleStructureChanged);
        System.Windows.Automation.Automation.AddAutomationEventHandler(
            System.Windows.Automation.WindowPattern.WindowOpenedEvent,
            this.getMsAutomationElement(),
            System.Windows.Automation.TreeScope.Subtree,
            this.handleWindowOpened);
        System.Windows.Automation.Automation.AddAutomationEventHandler(
            System.Windows.Automation.WindowPattern.WindowClosedEvent,
            System.Windows.Automation.AutomationElement.RootElement,
            System.Windows.Automation.TreeScope.Subtree,
            this.handleWindowClosed);

        this.registerValueChanged();
        this.registerTextNameChange();
        this.registerTabSelected();
        this.registerRangeValueChanged();
    }

    private void registerRangeValueChanged()
    {
        if (this.getMsAutomationElement() != null)
        {
            System.Windows.Automation.Automation.AddAutomationPropertyChangedEventHandler(
                    this.getMsAutomationElement(),
                    System.Windows.Automation.TreeScope.Subtree, this.handlePropertyChange,
                    System.Windows.Automation.RangeValuePattern.ValueProperty);
        }
    }

    private void unregisterRangeValueChanged()
    {
        System.Windows.Automation.Automation.RemoveAutomationPropertyChangedEventHandler(
                this.getMsAutomationElement(),
                this.handlePropertyChange);
    }

    private void registerValueChanged()
    {
        if (this.getMsAutomationElement() != null)
        {
            System.Windows.Automation.Automation.AddAutomationPropertyChangedEventHandler(
                this.getMsAutomationElement(),
                System.Windows.Automation.TreeScope.Subtree, this.handlePropertyChange,
                System.Windows.Automation.ValuePattern.ValueProperty);
        }
    }

    private void …
Run Code Online (Sandbox Code Playgroud)

c# ui-automation microsoft-ui-automation wpf-4.0

11
推荐指数
2
解决办法
3164
查看次数