首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >元素周围的一种方式不能滚动到视图中- Watir-webdriver with Ruby

元素周围的一种方式不能滚动到视图中- Watir-webdriver with Ruby
EN

Stack Overflow用户
提问于 2013-02-20 08:30:52
回答 5查看 6.8K关注 0票数 7

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

代码语言:javascript
运行
复制
<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>

这是两个单选按钮。“开”和“关”。“‘Off”是默认值。

使用Watir-webdriver和Ruby,我们想要选择'On‘单选按钮。我们这样做:

代码语言:javascript
运行
复制
browser.radio(:id => "HasRegistration_true").set

但在这样做的过程中,我们会得到以下错误:

代码语言:javascript
运行
复制
`WebElement.clickElement': Element cannot be scrolled into view:[object HTMLInputElement] (Selenium::WebDriver::Error::MoveTargetOutOfBoundsError)

我们知道Selenium 2会将页面滚动到元素,所以向下滚动是没有用的。我们总是使用watir-webdriver和ruby的最新版本。

我们不能更改页面的HTML,因为我们是QA工程师。

EN

回答 5

Stack Overflow用户

发布于 2014-04-15 21:13:35

这里有两个对我有效的解决方案:

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

然后

代码语言:javascript
运行
复制
require 'watir-scroll'
browser.scroll.to browser.radio(:id, "HasRegistration_true")

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

代码语言:javascript
运行
复制
browser.radio(:id, "HasRegistration_true").focus
browser.radio(:id, "HasRegistration_true").set

在我的代码中,".focus“直接滚动到以前不可见的元素。它可能也适用于你。

票数 1
EN

Stack Overflow用户

发布于 2013-03-13 20:06:29

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

代码语言:javascript
运行
复制
browser.element(:xpath, "//input[@id='HasRegistration_true']").click

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

它应该是这样的:

代码语言:javascript
运行
复制
browser.element(:css => "the CSS path you have copied from Firebug").click

两个人中的一个应该为你做这件事!!

祝你好运!

票数 0
EN

Stack Overflow用户

发布于 2013-03-14 09:02:16

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

我使用了类似下面的javascript来从标签标签中剥离类,这使得它远离了我试图处理的输入标签的方式,因为我遇到了一个Chrome特定的问题。execute_script("$(\"label.classname\").removeClass(\"classname inline\")")

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14970251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档