【问题标题】:Code works in watir-classic but not in watir-webdriver代码在 watir-classic 中有效,但在 watir-webdriver 中无效
【发布时间】:2016-02-02 13:56:00
【问题描述】:

当我在Watir-webdriver中写出打击代码时:

$browser.checkbox(:index,0).click

它给出了以下错误:

元素不可见(会话信息:chrome=48.0.2564.97)(驱动程序 信息:chromedriver=2.9.248315,platform=Windows NT 6.1 SP1 x86_64)

然后我写了这段代码$browser.input(:index,0).click然后报这个错误:

未知错误:元素在点 (952, 17) 处不可点击。其他 元素会收到点击: ... (会话信息:chrome=48.0.2564.97)(驱动程序信息: chromedriver=2.9.248315,platform=Windows NT 6.1 SP1 x86_64)

但是该元素是清晰可见的,而且上面给出的两行代码在watir-classic 中干净地工作,我们甚至不需要滚动屏幕。

谁能告诉我为什么会这样?为什么这个watir-webdriver 不如watir-classic 舒服?

<td class="centred"> <label class="label-checkbox"> <input type="checkbox" data-ng-model="cover.IsSelected" class="ng-pristine ng-valid"> <div class="fake-checkbox"> <span class="glyphicon glyphicon-ok"></span> </div> </label> </td>

【问题讨论】:

  • 单击元素时,Watir-Classic 不确保元素可见。相反,Watir-Webdriver 确实进行了可见性检查。如果您可以分享重现问题的 HTML 和 CSS,我们可以为您提供更具体的问题发生原因。
  • 嗨贾斯汀,鉴于下面的代码有文本框,当我在 watir-webdriver 中编写代码 'b.text_field(:name,'some').set 时,此文本框有效,但在经典。
  • 请不要输入代码作为注释;相反,请编辑您的问题以包含格式正确的代码。
  • 好的,谢谢,我会做的。 .
  • 嗨贾斯汀,我在最后一行添加了上面的代码。

标签: ruby watir watir-webdriver


【解决方案1】:

您需要做的第一件事是update your chromedriver,因为 2.9 版本已经 2 岁了。该二进制文件需要与当前版本的 chrome 保持同步。很可能仅此一项就可以解决您的问题。

如果是可见性问题... Watir(以及 Selenium 和 WebDriver)的目的是模仿用户的操作。如果该复选框对用户不可见,则您应该无法在测试中单击它。

如果复选框最初是不可见的,但后来变得可见,您可以这样做:browser.checkbox.when_present.click(注意index: 0 是默认行为,不是必需的)

如果复选框有一些令人兴奋的 javascript 内容以一种永远不可见的方式覆盖它,并且单击可见的内容会引发“元素不可点击”错误,您可能必须这样做 @ 987654324@ 该方法不会模仿用户在您网站上的实际操作,因此只能在不得已的情况下使用。

【讨论】:

  • "。Watir(以及 Selenium 和 WebDriver)的目的是模仿用户的操作。如果该复选框对用户不可见,您应该无法在其中单击它你的测试。”但是我能克服这个问题吗?这意味着我可以让 watir-web 驱动程序不要像在 watir-classic 中那样检查可见性吗?如果元素可用,Watir-classic 会自动滚动浏览器。
  • "并单击可见的内容会引发“元素不可点击”错误,您可能需要执行 browser.checkbox.when_present.fire_event :click" 谢谢,我不知道此信息.
  • '但是我能克服这个问题吗?'我说这是一个功能而不是一个问题。 Chromedriver 2.21 有什么不同吗?它是否适用于 Internet Explorer 或 Firefox?火灾事件方法对您有用吗?
  • “但是我能克服这个问题吗?”我说这是一个功能而不是问题。” 但我说我不想要这个功能,它给我制造了不必要的问题,Classic 在这个地方非常好。我可以关掉这个检查吗? “Chromedriver 2.21 有什么不同吗?”这没有任何区别。 “它可以与 Internet Explorer 或 Firefox 一起使用吗?”当我倾向于驱动 IE 浏览器时,Watir-webdriver 非常糟糕。 “火事件法对你有用吗?”是的,我已经用过这个了,这很好用,谢谢。
  • 我很高兴 fire_event 对你有用,但是不,不会有切换来关闭对项目目的至关重要的功能。由于 Microsoft 的限制,IE 驱动程序难以编写和维护,希望他们为 Edge 创建自己的驱动程序的工作将在未来缓解这些问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
  • 2016-10-09
  • 1970-01-01
  • 2011-10-28
相关资源
最近更新 更多