据我从页面对象 gem 代码中可以看出,我不相信页面对象 gem 支持 watir-webdriver 的 :css 定位器。至少它不包含在 watir_finders 方法中 - 请参阅element.rb和div.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;"]')
请注意,如果您采用这种方式,您可能想查看另一个问题,其中讨论了为班级使用更强大的定位器。