使用cheezy的page-object和watir时是否可以访问'style'类型的css选择器?

时间:2013-01-22 17:22:53

标签: cucumber watir pageobjects

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

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

据我所知,从页面对象gem代码,我不相信页面对象gem支持:watir-webdriver的css定位器。至少它不包含在watir_finders方法中 - 请参阅element.rbdiv.rb。我猜测原因是由于watir-webdriver的当前限制:css定位器只能在使用element方法时使用 - 请参阅watir-webdriver's issue 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;"]')

请注意,如果你这样做,你可能想看看这个other question,它讨论了为类使用更强大的定位器。