无法使用Robot Framework向下滚动网页

时间:2015-08-11 17:08:42

标签: javascript python-2.7 selenium robotframework

我正在使用Selenium 2 Robot Framework来自动化我们的应用程序。我使用下面的JavaScript代码向下滚动页面,但无法滚动。

我想在向下滚动后在文本框中输入文字,但我收到了例外:

  

元素不可见

默认情况下,文本框在屏幕上部分可见,如果我们手动向下滚动而不是完全可见,但是selenium机器人框架无法向下滚动。

我试过了:

Execute JavaScript    window.scrollTo(0,200)

Execute JavaScript    window.scrollBy(0,200)

Execute JavaScript    window.scrollTo(0, document.body.scrollHeight)

有人可以帮我解决这个问题吗?

5 个答案:

答案 0 :(得分:2)

您的滚动代码看起来不错。但是,我不认为滚动是你的问题。即使滚动远离屏幕,元素可见性也可以。试试这个代码吧。至少在Chrome页面上滚动显示输入文字关键字

*** Settings ***
Library         Selenium2Library

*** Test Cases ***
Scroll
    Open Browser   http://www.stackoverflow.com/    Chrome
    Execute JavaScript    window.scrollTo(0, document.body.scrollHeight)
    Input Text    //*[@id="search"]/input    robot framework
    Sleep    3
    Close All Browsers

我认为您的编辑框可能有错误的定位器。

答案 1 :(得分:2)

Hey Guys修复了问题Execute Javascript ${element}.scrollby(0,200)如果元素不在视口中,它将不会在每个案例中都有效。 有效的方法来滚动页面以获取元素来查看端口。

如果我们使用Execute Javascript Window.scroll(x,y),我们需要指定水平和垂直位置x,y,这很难找到并且可能不准确。

相反,我们可以使用以下代码行 Execute Javascript window.document.evaluate("//xpathlocation", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.scrollIntoView(true);

上面的代码将滚动窗口并获取/ xpathlocation中指定的元素以查看端口

答案 2 :(得分:0)

您是否直接在ipython控制台中尝试过selenium webdriver?

我试过如下,它可以向下滚动。

from selenium import webdriver
firefox = webdriver.Firefox()
firefox.get('http://twitter.com')
firefox.execute_script('window.scrollTo(0,200)')

答案 3 :(得分:0)

您可以将其用作关键字:

Execute Javascript    $(document).scrollTop(${x})

其中,

x 是向下滚动的数字(以毫秒为单位)。

答案 4 :(得分:0)

如果页面中还有要滚动到其中的带有滚动条的其他元素,则可以使用此Execute javascript命令:

Execute Javascript   document.querySelector('<div.css>').scrollTop = 200;

您只需要更改'200'并增加它,就可以向下滚动。