【发布时间】:2016-03-24 05:12:38
【问题描述】:
我不认为很多人正在使用 Winium.Cruciatus 或 Winium.Desktop WebDriver 实现,但如果有人使用,也许你可以帮助或从我的解决方法中受益。
我使用WebDriver 实现来启动我的应用程序,如下所示:
capabilities = { 'app' => path, 'launchDelay' => 1500 }
driver = Selenium::WebDriver.for(:remote,
url: 'http://127.0.0.1:9999',
desired_capabilities: capabilities)
应用程序启动得很好但是我需要找到根元素才能找到子元素,而无需每次都搜索整个自动化树。
我曾经这样做过:
wait.until { @driver.find_element(:id, 'appid') }
如果应用程序已加载并且没有打开太多窗口,则该方法可以正常工作。但是,当我打开 10-15 个窗口并且应用程序需要几秒钟来启动 cruciatus 库时,它就会挂起。我已经将此追溯到自动化库本身,它挂起。我认为这是由于当库仔细阅读元素树时应用程序尚未加载,它开始遍历范围内的每个元素,这需要很长时间,并且最终可能以堆栈溢出结束 (according to MSDN)。
我什至尝试过自己修复 Cruciatus 的实现,但由于这是枚举元素缓慢的固有问题,即使我在 Cruciatus 中设置了超时,它也没有真正的帮助。
我将提供我的解决方法作为答案,但如果有人有更好的建议,将不胜感激?
【问题讨论】:
标签: c# wpf testing automation webdriver