我正在使用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)
有人可以帮我解决这个问题吗?
答案 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'并增加它,就可以向下滚动。