我一直在使用黄瓜 / Watir-Webdriver用IE就好了。在我的测试中,我转到表单字段并输入数据,然后单击保存按钮。所有动作都效果很好。
最近我决定去硒网格2出于性能原因在机器上分配测试。它在 FF 和 Chrome 上运行得很好,但我开始发现 IE 上有问题。
问题是这样的:
当我使用 Selenium Grid 2 远程驱动 IE 时,当它发送击键(即 send_keys 或 .set“某些文本字符串”)时,文本会正确显示在字段中,BUT字段验证无法识别该文本。
保存表单时,我会收到一条错误消息,提示“请输入描述” - 但描述仍然存在。
如果我使用 watir-webdriver (和 IE)在本地运行测试,效果很好,但仅当测试从 Selenium Grid 驱动时才会出现此问题。
以下是我使用网格设置浏览器的方法:
@browser = Watir::Browser.new(:remote, :url=>"http://[myhost]:4444/wd/hub", :desired_capabilities=> browser_name)
where browser_name is currently set to ie.
在远程计算机上,我使用以下命令设置节点:
java -jar selenium-server-standalone-[version].jar -role node -hub [path to the above hub, ie http://[myhost]:4444/grid/register] -browser browserName="internet explorer"
测试代码本身非常简单,它登录到我们的内部应用程序,然后单击一个显示表单的按钮。在表单中,它将数据发送到字段并单击“保存”。
该测试执行以下操作:
Watir::Wait.until { @browser.div(:id=>"after-announcement-container").text_field(:name=>'Description').exists?}
@browser.div(:id=>"after-announcement-container").text_field(:name=>'Description').set "This is a Test"
@browser.div(:id=>'save-announcement-button').click
当我运行测试网格时:
将测试发送到机器
远程计算机上的 IE 启动
IE 通过应用程序实现自动化
在表单中,它正确发送文本(“这是一个测试”)
IE点击保存。
此时表格显示“请提供描述”(那里写着“这是一个测试。”)
我试过了:
添加等待时间
使用诸如 :tab 和 :click 之类的 send_keys 在发送文本之前先输入字段。
我还保持 webdriver 会话打开并手动保存(单击“保存”),但总是收到错误。即使单击应用程序并单击“保存” - 它仍然认为该字段为空。不过,一旦我手动输入一个按键,它就会起作用。
网络驱动程序输出:
Webdriver 确实有一些输出,显示它发送文本正常,我可以直观地看到它的形式:
11:06:21.296 INFO - Executing: [send keys: 7 org.openqa.selenium.support.events.
EventFiringWebDriver$EventFiringWebElement@f3140943, [This is a Test]] at URL: /
session/135941c9-389d-45fa-9fed-14620a4802ca/element/7/value)
11:06:21.662 INFO - Done: /session/135941c9-389d-45fa-9fed-14620a4802ca/element/
7/value
11:06:23.192 INFO - Executing: org.openqa.selenium.remote.server.handler.Status@
4ead24d9 at URL: /status)
对我来说奇怪的是,如果我在本地使用 watir-webdriver ,这会起作用。我只在 Grid 发送 webdriver 测试时遇到这个问题。
由于这是手动工作的,因此开发人员不会将此视为错误。所以我无法通过改变 JS 来解决这个问题。我希望有一个解决方案可以让它与网格一起工作。