我无法使用page-object-gem点击复选框。 html代码如下所示:
<label class='cc pointer value-apple'>
<input class='hidden' type='checkbox' value='apple'></input>
<div style="background-image:url(/images/fruit-apple-3453452346.jpg)"><div>
</label>
<label class='cc pointer value-banana'>
<input class='hidden' type='checkbox' value='banana'></input>
<div style="background-image:url(/images/fruit-banana-2359235674.jpg)"><div>
</label>
使用watir-webdriver我没有问题点击标签或div,因为隐藏了复选框。那些工作正常。但是,这似乎不能使用page-object-gem。我尝试过以下方法:
label(:select_fruit_apple, :class => /apple/)
on(FruitsPage).select_fruit_apple
div(:select_fruit_apple, :style => /apple/)
on(FruitsPage).select_fruit_apple
非常感谢有关如何做到这一点的任何建议。
答案 0 :(得分:0)
由于Watir-Webdriver要求您单击标签或div,因此您必须对页面对象执行相同的操作。
label和div访问器方法不会创建单击元素的方法。对于您尝试的代码,当您调用select_fruit_apple
时,它只返回label或div元素的文本。
要点击标签(或div),您需要:
_element
方法来完成。click
方法。这将调用Watir-Webdriver的点击方法。如果你直接使用NestedElement,那么这个类会是什么样子:
class MyPage
include PageObject
def select_fruit_apple()
label_element(:class => 'value-apple').click
end
end
或者,如果您需要标签/ div元素用于多个事物,您可能想为它们创建一个访问器:
class MyPage
include PageObject
label(:apple, :class => 'value-apple')
def select_fruit_apple()
apple_element.click
end
end
然后,您可以调用此方法来设置复选框:
on(FruitsPage).select_fruit_apple
当然,如果你想节省为每个水果定义一个方法,你可以使用一个带参数的方法:
class MyPage
include PageObject
def select_fruit(fruit)
label_element(:class => 'value-' + fruit).click
end
end
然后方法调用将是:
on(FruitsPage).select_fruit('apple')