gpt4 book ai didi

ruby - 无法单击复选框。使用页面对象 gem

转载 作者:太空宇宙 更新时间:2023-11-03 16:51:24 25 4
gpt4 key购买 nike

我在使用 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

非常感谢有关如何执行此操作的任何建议。

最佳答案

由于 Watir-Webdriver 要求您单击标签或 div,因此您必须对页面对象执行相同的操作。

label 和 div 访问器方法不会创建单击元素的方法。对于您尝试的代码,当您调用 select_fruit_apple 时,它只是返回标签或 div 元素的文本。

要点击标签(或 div),您需要:

  1. 获取标签/div 元素。这可以通过定义一个使用 NestedElement 的方法来完成。或创建标签/div 访问器并使用 _element 方法。
  2. 调用元素的click 方法。这将调用 Watir-Webdriver 的点击方法。

如果您直接使用 NestedElement,类将如下所示:

class MyPage
include PageObject

def select_fruit_apple()
label_element(:class => 'value-apple').click
end
end

或者,如果您需要 label/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')

关于ruby - 无法单击复选框。使用页面对象 gem ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20668245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com