的Watir.滚动到页面的某个点

Waj*_*jih 7 ruby watir watir-webdriver ruby-1.9.3

我试图在网站上自动进行在线调查,但每次都会出现此错误:

Selenium::WebDriver::Error::UnknownError: unknown error: Element is not clickable at  
point (561, 864). Other element would receive the click: a id="habla_oplink_a"       

class="habla_oplink_a_normal hbl_pal_header_font_size hbl_pal_title_fg "
Run Code Online (Sandbox Code Playgroud)

我需要了解的是如何滚动到页面的某个点,以便我的脚本可以恢复填写页面上的调查.

这是我的代码,它设法填写调查的一部分,但是当它到达浏览器内部不在视图中的行(需要用户向下滚动到的行)时失败:

buttons = browser.elements(:class => "assessment-choice")

buttons.each do |button|
  button.click
end
Run Code Online (Sandbox Code Playgroud)

我还希望能够更改我的代码,以便它只选择一个特定的选项,但页面上的HTML不是很友好.

这是我正在查看的网页:https://staging2.clearfit.com/assessment/assessment/95867fb272df436352a0bd5fbdd

调查中其中一个选项的HTML:

<a id="answers_79_0" class="assessment-choice" onmouseover="answerOver(this)"    onmouseout="answerOut(this)" onclick="setAssessmentAnswer(this, 3, '0', '79',   '#answers_49839163')">Strongly<br>Agree</a>
Run Code Online (Sandbox Code Playgroud)

Jus*_* Ko 10

运用 execute_script

要滚动到元素,您需要执行javascript:

browser.execute_script('arguments[0].scrollIntoView();', button)
Run Code Online (Sandbox Code Playgroud)

可以看出这可以在以下脚本中使用.如果没有要滚动的行,聊天选项卡会覆盖其中一个按钮,从而导致异常.

require 'watir-webdriver'

browser = Watir::Browser.new :chrome
browser.goto 'https://staging2.clearfit.com/assessment/assessment/95867fb272df436352a0bd5fbdd'

buttons = browser.elements(:class => "assessment-choice")

buttons.each do |button|
    browser.execute_script('arguments[0].scrollIntoView();', button)
    button.click
end
Run Code Online (Sandbox Code Playgroud)

使用watir-scroll gem

请注意,您可以安装watir-scroll gem以使滚动线更好.宝石允许线条简单地:

browser.scroll.to button
Run Code Online (Sandbox Code Playgroud)

该脚本将如下所示:

require 'watir-webdriver'
require 'watir-scroll'

browser = Watir::Browser.new :chrome
browser.goto 'https://staging2.clearfit.com/assessment/assessment/95867fb272df436352a0bd5fbdd'

buttons = browser.elements(:class => "assessment-choice")

buttons.each do |button|
    browser.scroll.to button
    button.click
end
Run Code Online (Sandbox Code Playgroud)

  • 你是否也需要它 - 即`require'watir-scroll'`? (2认同)