7

因此,我们的页面中有以下代码:

<div class="toggle-wrapper">
  <input id="HasRegistration_true" class="registration_required toggle" type="radio" value="True" name="HasRegistration" data-val-required="The HasRegistration field is required." data-val="true">
  <label for="HasRegistration_true" class="">On</label>
  <input id="HasRegistration_false" class="registration_required toggle" type="radio" value="False" name="HasRegistration" checked="checked">
  <label class="checked" for="HasRegistration_false">Off</label>
</div>

这些是 2 个单选按钮。'开启和关闭'。“关闭”是默认值。

使用 Watir-webdriver 和 Ruby,我们要选择“打开”单选按钮。我们这样做:

browser.radio(:id => "HasRegistration_true").set

但是在这样做时,我们会收到以下错误:

`WebElement.clickElement': Element cannot be scrolled into view:[object HTMLInputElement] (Selenium::WebDriver::Error::MoveTargetOutOfBoundsError)

我们知道 Selenium 2 将页面滚动到元素,因此尝试向下滚动是没有用的。我们一直在使用最新版本的 watir-webdriver 和 ruby​​。

由于我们是 QA 工程师,因此我们无法更改页面的 HTML。

4

5 回答 5

1

以下是两个对我有用的解决方案:

有一个名为watir-scroll的 Ruby gem可以工作。

然后

require 'watir-scroll'
browser.scroll.to browser.radio(:id, "HasRegistration_true")

如果您不想添加 gem,我的同事建议了一些(对我来说)有点令人惊讶的东西,它与上面的代码具有相同的效果:

browser.radio(:id, "HasRegistration_true").focus
browser.radio(:id, "HasRegistration_true").set

在我的代码中,“.focus”直接滚动到以前不可见的元素。它也可能对您有用。

于 2014-04-15T13:13:35.157 回答
0

您可以通过执行一些 javascript 来动态操作 html 以使单选元素可设置。要在页面上执行 javascript,请执行以下操作: @browser.execute_script("your javascript here")

我使用类似下面的 javascript 将类从标签标签中剥离出来,从而将其移出我试图针对我遇到的 Chrome 特定问题采取行动的输入标签。 execute_script("$(\"label.classname\").removeClass(\"classname inline\")")

于 2013-03-14T01:02:16.097 回答
0

如果元素包含在表单和 div (Wrap) 类中,我发现我必须执行以下操作才能单击“ https://quote.comparethemarket.com/Motor/Motor/AboutYourVehicle上的“否”单选按钮.aspx ? ”页面:

div_list = @browser.form(:action => "AboutYourVehicle.aspx?ton_t=CTMMO&prdcls=PC&rqstyp=newmotorquote&AFFCLIE=CM01").div(:class => "inputWrap").divs(:class => "custom-radio" )

然后: div_list[1].click

希望这也能解决您的问题:-)

于 2013-03-21T14:33:13.530 回答
0

首先尝试使用 XPATH 定位元素:

browser.element(:xpath, "//input[@id='HasRegistration_true']").click

或者

或者,如果它是您试图定位的隐藏元素,那么您最好使用 CSS。为 firefox 下载 firebug 插件并复制元素的 CSS 路径。

它应该是这样的:

browser.element(:css => "the CSS path you have copied from Firebug").click

2个中的一个应该为你做!

祝你好运!

于 2013-03-13T12:06:28.600 回答
0

我没有使用 watir,但我遇到了与您相同的错误“......无法滚动到视图中......”。我试图使用 watir 来解决它,但对我没有用。然后,我使用 ActionBuilder(move_toclick)并且错误消失了。

我避免错误的方法是:

@driver.action.move_to(*webelement*).click.perform

我希望它对你有用

于 2018-05-04T18:42:13.587 回答