我正在使用 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)
我该如何解决这个问题?
您的滚动代码看起来不错。但是,我不认为滚动是你的问题。即使元素滚动离开屏幕,元素可见性也正常。例如尝试这段代码。至少在 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
我认为您的编辑框定位器可能不正确。
我用
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 中指定的元素获取到视口。
执行 JavaScript window.scrollTo(1,500) 对我来说适用于 Python2 ;你只需输入 x <> 0 例如 '1' 否则它不会'滚动
您可以使用它作为关键字:
Execute Javascript $(document).scrollTop(${x})
哪里,
x 是向下滚动的数字(以毫秒为单位)。
您是否直接在 IPython 控制台中尝试过 Selenium webdriver?
我已经尝试过如下,并且可以向下滚动。
from selenium import webdriver
firefox = webdriver.Firefox()
firefox.get('http://twitter.com')
firefox.execute_script('window.scrollTo(0,200)')
如果您的页面中有另一个带有滚动条的元素您想要滚动到其中,您可以使用此执行javascript命令:
Execute Javascript document.querySelector('<div.css>').scrollTop = 200;
您可以更改“200”并在您想要向下滚动更多时增加它。
我尝试按 Tab 多次,直到找到我的元素..!
FOR ${i} IN RANGE ${Range}
Press Keys NONE TAB
END
我刚刚按 TAB 键所需的次数结束,选择一个元素并按 TAB 键
Click Element ${Element}
FOR ${i} IN RANGE ${Range}// you can even provide number
Press Keys NONE TAB
END
我尝试过以下对我有用的方法
填写所需信息
input text id:userName Joe Biden
input text id:userEmail [email protected]
input text id:currentAddress 211 Madison Ave NY
execute javascript window.scrollTo(0,200)
scroll element into view id:submit
您需要在滚动之前选择窗口
您可以使用以下。
Execute JavaScript window.scrollTo(0,document.body.scrollHeight)