【问题标题】:This code runs in WATIR-Classic but not in watir-webdriver此代码在 WATIR-Classic 中运行,但不在 watir-webdriver 中
【发布时间】:2016-08-03 07:47:24
【问题描述】:
require 'watir'
b=Watir::Browser.new
b.goto 'www.xyz.com'
b.maximize
b.label(:text, "Car Make").parent.spans[1].click
b.element(tag_name: 'md-option', text: "BMW").when_present.click

当我为 watir-classic 编写上面的代码时,上面的代码工作正常,但是当我为 watir-webdriver 编写上面的代码时,可见性检查阻止我点击 b.label(:text, "Car Make").parent.spans[1].click 这个元素,有什么办法可以取消这个在watir webdriver中检查可见性?下面是我为 watir-webdriver 编写的代码,

require 'watir-webdriver'
require 'watir-scroll'
b=Watir::Browser.new :chrome
b.goto 'www.xyz.com'
b.window.maximize
b.label(:text, "Car Make").parent.spans[1].click
b.element(tag_name: 'md-option', text: "BMW").when_present.click

【问题讨论】:

  • 在某一时刻,watir 是基于 1 的索引,但我们移动到了基于 0 的索引。只是为了确保不是这样..您正在尝试单击父级下方的第二个跨度,对吗?

标签: watir watir-webdriver watir-classic


【解决方案1】:

Watir-Webdriver 中没有用于禁用可见性检查的选项。对于测试,实际上最好不要与不可见的元素进行交互。

最好的解决方案是在单击之前使标签/跨度可见。也许你只需要等待它出现:

b.label(:text, "Car Make").parent.spans[1].when_present.click

如果您确实想绕过可见性检查,可以直接触发点击事件。请注意,如果您的元素期望的不仅仅是一次点击,您可能需要触发多个事件:

b.label(:text, "Car Make").parent.spans[1].fire_event(:onclick)

【讨论】:

  • 可见性的东西被烘焙到 webdriver 顺便说一句,而不是 watir。位于 webdriver 之上的所有工具(selenium、capybara、watir 等)都将对与用户不可见的元素进行交互具有相同的限制。
  • 其他地方我试过fire_event,但不是点击不是点击。标签是<div class="quote-widget" id="quote-widget" ng-controller="getAQuotePopupController"> <div class="quote-widget-tabs"> <a style="" class="selected" href="" data-masthead="car" ng-click="displayQuoteWidgetForm('car');" ng-class="(displayedQuoteForm=='car') ? 'selected' : ''">Car <span>Insurance</span></a> <a style="" class="" href="" data-masthead="travel" ng-click="displayQuoteWidgetForm('travel');" ng-class="(displayedQuoteForm=='travel') ? 'selected' : ''"Travel>(下一个)
  • 从上面继续<span>Insurance</span></a> </div> </div> $browser.div(:id,"quote-widget").div.as[1].fire_event(:click)你能告诉我这可能是什么问题吗?
  • 如果没有看到页面和/或相关的 JavaScript,这有点难以判断。但是,我看到一些控件不仅仅只是被点击。例如,我正在使用的一个自动完成功能要求在单击事件之前触发焦点事件。最终,您需要深入研究 JavaScript 并确定用户与其交互时触发了哪些事件。
  • @JustinKo 好的,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-26
  • 2012-03-06
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多