标签: ui-automation

有什么方法可以避免在只需要几个方法时创建一个巨大的C#COM接口包装器?

问候所有,

我正在开发一个C#程序,它需要能够在Windows 7 Explorer的新ItemsView控件中获取热门项目的索引.幸运的是,Microsoft通过查询控件的自定义属性,提供了一种通过UI自动化实现此目的的方法.

不幸的是,System.Windows.Automation命名空间莫名其妙地似乎没有提供查询自定义属性的方法!这使我不得不完全抛弃C#Automation命名空间并仅使用非托管COM版本.一种方法是将所有自动化代码放在单独的C++/CLI模块中,并从我的C#应用​​程序中调用它.但是,如果可能的话,我想避免使用此选项,因为它会为我的项目添加更多文件,而且我不得不担心32/64位问题等等.

另一个选择是使用ComImport属性来声明相关接口并通过COM-interop完成所有操作.这就是我想做的.但是,相关的接口,如IUIAutomation和IUIAutomationElement,正在变得非常大.他们总共有数百种方法,参考吨和大量的接口(我假设我还必须声明),几乎所有这些都是我永远不会使用的.我不认为UI自动化接口也在任何类型库中声明,所以我不能使用TLBIMP.

有什么方法可以避免手动将bajillion方法签名转换为C#而只是声明我实际需要的十个左右的方法吗?我看到C#4.0添加了一个新的"动态"类型,可以缓解COM互操作; 那与我的问题有关吗?

谢谢

c# com interface com-interop ui-automation

3
推荐指数
1
解决办法
627
查看次数

与其他应用程序交互(例如单击按钮)

我正在尝试在工作中自动执行许多重复性任务,这个小问题让我感到难过.

我们正在使用一个应用程序来打印在线订单的标签,过程是这样的.

  1. 点击订单
  2. 查看订单详情并点击"完成"
  3. 5秒的程序计算
  4. 确认您要打印标签
  5. 标签打印,你就完成了

在忙碌的日子里,我们必须通过这个过程超过500个订单,因为这个任务因为步骤3而消耗了大量无用的时间.用户必须等待那5秒才能点击"打印"按钮.假设我们有500个订单,那是500次5秒,大概是40分钟.整个发送过程花费2个小时,因此有33%的时间因人们等待点击按钮而丢失.

我正在尝试找到一种自动执行步骤4的方法,以便用户在完成步骤2后可以停止与应用程序交互.

那么有没有办法使用C#从另一个应用程序中单击另一个表单中的按钮?弹出确认屏幕时必须触发事件.请注意,此确认屏幕不是默认的Windows打印对话框,而是应用程序的一部分,因此不会弄乱首选项.

c# automation ui-automation

3
推荐指数
1
解决办法
3326
查看次数

具有功能语言的UI自动化

有没有人有功能语言编写UI自动化的例子或经验?我正在学习F#以更好地理解功能概念,我很难弄清楚如何用函数式语言构建自动UI测试 - 似乎很容易使用我在Java中使用的相同页面/屏幕对象模式或C#,但由于缺乏经验,我很好奇,如果我错过了不同的方法.

testing f# ui-automation canopy-web-testing

3
推荐指数
1
解决办法
1359
查看次数

我可以使用phantom.js来测试javascript繁重的应用程序吗?

目前我正在使用specflow,selenium,流畅的自动化和xunit的组合来测试我在Chrome网站的部署实例上的浏览器应用程序.这在开发人员计算机上运行良好,但是除了构建服务器代理很慢之外,构建服务器代理经常出现故障.

我已经遍布phantom.js 文档我很难理解我是否可以使用phantom.js来完全测试我的应用程序.

我的应用程序有很多javascript逻辑,我使用requirejs加载我的所有模块,我想知道我是否可以使用幻影的无头浏览器功能来测试它的所有功能.它会下载所有的javascript文件,然后允许我在dom上执行操作,比如启动包含表单的模式吗?很多UI都是用挖空模板构建的.

我已经完成了一些搜索,但没有任何确定性.有没有人对此有任何建议?此时我对跨浏览器测试并不感到困扰,我们已经获得了手动QA.这只是通过所有用户故事的ui自动化失败的快乐路径早期预警系统.


在所有这些结束时,我做了一些非常有用的更改

  • 访问selenium驱动程序并检查 jQuery.active
  • 如果css选择器为选择器返回多个项,则创建一个新的expectOne/assertOne

acceptance-testing ui-automation jasmine phantomjs fluentautomation

3
推荐指数
1
解决办法
800
查看次数

VB:在Adobe Illustrator,Photoshop中分配布尔属性

在使用VBA自动化Adobe Illustrator CS3时,我发现将布尔变量赋值布尔属性会导致始终分配False:

Dim New_Path As Illustrator.PathItem
Dim v As Boolean
' ...
v = True
New_Path.Filled = v     ' ERROR: New_Path.Filled is False
v = False
New_Path.Filled = v     ' New_Path.Filled remains False
Run Code Online (Sandbox Code Playgroud)

分配给常量可以正常工作:

Dim New_Path As Illustrator.PathItem
' ...
New_Path.Filled = True  ' New_Path.Filled is True
New_Path.Filled = False ' New_Path.Filled is False
Run Code Online (Sandbox Code Playgroud)

验证关于各种AI布尔属性如PathItem.Stroked,Layer.Visible

已验证Photoshop.ArtLayer.Visible.

已验证VB6.

所以,我觉得这种行为在Adobe Adob​​e Creative Suite产品中很常见.

这是一个错误还是一个功能?

vb6 photoshop vba adobe-illustrator ui-automation

3
推荐指数
1
解决办法
182
查看次数

如何在c#中包含AutomationElement?我要补充什么?

我无法初始化AutomationElement。

AutomationElement element = AutomationElement.FromHandle(process.MainWindowHandle);
Run Code Online (Sandbox Code Playgroud)

它突出显示了AutomationElement,它表示的错误是http://i.stack.imgur.com/wNCvq.png

c# automation ui-automation

3
推荐指数
2
解决办法
3823
查看次数

使用Python的Windows桌面GUI自动化 - 睡眠与紧密循环

我正在使用Python的PyAutoGUI库来自动化GUI.在我完成当前窗口上的数据输入后,我自动化的应用程序将打开一个新窗口.一切都由python自动化(当前窗口中的数据输入和打开窗口所需的点击)来处理.

在当前窗口中执行单击时,新窗口需要一些时间才能打开(可能介于2 - 5秒之间).所以我可以在这里考虑两个选项:

  1. 睡觉使用time.sleep(5)(Con:3秒可能会浪费不必要的)
  2. 旋转紧密循环,直到窗口出现在屏幕上.PyAutoGUI提供了一个locateOnScreen功能,可用于查明窗口是否实际出现在屏幕上.(但是,这是CPU密集型的,并且该功能本身是CPU密集型的,并且需要大约2秒才能返回)

所以它看起来[1]对我来说是一个更好的选择.还有其他一些我可能错过的技术会比这两种方法更好吗?谢谢.

python windows ui-automation pyautogui

3
推荐指数
1
解决办法
4709
查看次数

使用Python-Selenium自动执行GMAIL登录

我正在尝试使用Python的Selenium软件包自动登录到GMail。但是,我无法完成任务并得到以下错误:

Traceback (most recent call last):
  File "C:\Users\Surojit\Desktop\Python\automaticpasswordFiller.py", line   21, in <module>
    passwordElem = browser.find_element_by_id('Passwd')
  File "C:\Users\Surojit\AppData\Local\Programs\Python\Python35-32\lib\site- packages\selenium\webdriver\remote\webdriver.py", line 266, in  find_element_by_id
    return self.find_element(by=By.ID, value=id_)
  File "C:\Users\Surojit\AppData\Local\Programs\Python\Python35-32\lib\site- packages\selenium\webdriver\remote\webdriver.py", line 744, in find_element
    {'using': by, 'value': value})['value']
  File "C:\Users\Surojit\AppData\Local\Programs\Python\Python35-32\lib\site-  packages\selenium\webdriver\remote\webdriver.py", line 233, in execute
    self.error_handler.check_response(response)
  File "C:\Users\Surojit\AppData\Local\Programs\Python\Python35-32\lib\site- packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate  element: {"method":"id","selector":"Passwd"}
Stacktrace:
    at FirefoxDriver.prototype.findElementInternal_   (file:///C:/Users/Surojit/AppData/Local/Temp/tmpceecsm46/extensions/fxdriver@goo glecode.com/components/driver-component.js:10770)
     at FirefoxDriver.prototype.findElement   (file:///C:/Users/Surojit/AppData/Local/Temp/tmpceecsm46/extensions/fxdriver@goo  glecode.com/components/driver-component.js:10779)
    at DelayedCommand.prototype.executeInternal_/h   (file:///C:/Users/Surojit/AppData/Local/Temp/tmpceecsm46/extensions/fxdriver@goo    glecode.com/components/command-processor.js:12661)
    at DelayedCommand.prototype.executeInternal_    (file:///C:/Users/Surojit/AppData/Local/Temp/tmpceecsm46/extensions/fxdriver@goo glecode.com/components/command-processor.js:12666)
    at …
Run Code Online (Sandbox Code Playgroud)

python gmail selenium ui-automation selenium-webdriver

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

现在是否可以使用Appium自动化App Store应用程序

从历史上看,使用Appium无法自动化iOS应用商店应用(例如,由于所有应用商店应用上使用的分发证书,这意味着您无法通过Appium访问应用).

现在可以在2018年中期使用,如果有的话,是否有人知道如何设置它?

automation ui-automation ios appium appium-ios

3
推荐指数
1
解决办法
655
查看次数

向项目中的所有表单添加事件

如果我想FormForm标题中显示我项目中每个项目的大小,那么最佳方法是什么?
我不想在每个人手动放置一个事件处理程序Form.
我希望这个过程是自动的.
类似于重载Load()事件,在resize事件上添加处理程序.

vb.net events ui-automation winforms

3
推荐指数
1
解决办法
492
查看次数