我正在使用Selenom2和Robot框架来自动化我们的应用程序。我已经使用下面的JavaScript代码向下滚动页面,但无法滚动。
我想在向下滚动后在文本框中输入文本,但收到异常:
元素不可见
默认情况下,文本框在屏幕上是部分可见的,如果我们手动向下滚动它比它完全可见,但Selify机器人框架无法向下滚动。
我试过了:
Execute JavaScript window.scrollTo(0,200)
Execute JavaScript window.scrollBy(0,200)
Execute JavaScript window.scrollTo(0, document.body.scrollHeight)
我怎么才能解决这个问题呢?
9条答案
按热度按时间wfsdck301#
您的滚动代码看起来没问题。然而,我不认为滚动是你的问题。即使从屏幕上滚动离开,元素可见性也是可以的。例如,尝试使用下面的代码。至少在Chrome页面上滚动回输入文本关键字
我认为您的编辑框的定位器可能不正确。
qacovj5a2#
我用
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中指定的元素转到视窗。
bttbmeg03#
您可以将其用作关键字:
哪里,
x是向下滚动的毫秒数。
pwuypxnk4#
您有没有在IPython控制台中直接尝试过Selify WebDriver?
我试过了,如下所示,它可以向下滚动。
8oomwypt5#
如果您想要滚动到页面中具有滚动条的另一个元素,您可以使用下面的Execute javascript命令:
你只需改变‘200’,并增加它,因为你想向下滚动更多。
rwqw0loc6#
我试着按了Tab键多次,直到我落地到我的元素..!
1wnzp6jl7#
我只需按TAB键所需的次数,选择一个元素,然后按TAB键即可结束
w9apscun8#
我试过以下方法,它对我很管用
填写所需信息
您需要在滚动之前选择该窗口
2guxujil9#
Execute JavaScript window.scllTo(1,500)对我来说适用于Python2;您只需将x<>0作为示例‘1’,否则它不会‘滚屏’