1

在我的 page.rb 中,我使用div(:select, :css => 'div.active[style="display: block;"]')的是哪个给我的错误 - Watir::Exception::MissingWayOfFindingObjectException。

在控制台中,document.querySelector("div.active[style='display: block;']")正确返回对象。我不太确定在哪里查看文档,所以任何帮助将不胜感激。

提前致谢。

4

1 回答 1

1

据我从页面对象 gem 代码中可以看出,我不相信页面对象 gem 支持 watir-webdriver 的 :css 定位器。至少它不包含在 watir_finders 方法中 - 请参阅element.rbdiv.rb。我猜测原因是由于 watir-webdriver 当前的限制,即 :css 定位器只能在使用该element方法时使用 - 请参阅watir-webdriver 的问题 124

解决方案 1 - 使用块

但是,您可以通过在页面对象中使用块定义 div 来解决这些问题。

假设html:

<div class="active" style='display: block;'>text</div>

以下对我有用:

div(:select){ browser.element(:css => 'div.active[style="display: block;"]') }

解决方案 2 - 使用 Xpath

或者,您可以将 css 定位器转换为 xpath 定位器:

div(:select2, :xpath => '//div[@class="active" and @style="display: block;"]')

请注意,如果您采用这种方式,您可能想查看另一个问题,其中讨论了为班级使用更强大的定位器。

于 2013-01-22T17:55:18.350 回答