selenium 无法使用Robot框架向下滚动网页

pexxcrt2  于 2022-11-10  发布在  其他
关注(0)|答案(9)|浏览(238)

我正在使用Selenom2和Robot框架来自动化我们的应用程序。我已经使用下面的JavaScript代码向下滚动页面,但无法滚动。
我想在向下滚动后在文本框中输入文本,但收到异常:
元素不可见
默认情况下,文本框在屏幕上是部分可见的,如果我们手动向下滚动它比它完全可见,但Selify机器人框架无法向下滚动。
我试过了:

Execute JavaScript    window.scrollTo(0,200)

Execute JavaScript    window.scrollBy(0,200)

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

我怎么才能解决这个问题呢?

wfsdck30

wfsdck301#

您的滚动代码看起来没问题。然而,我不认为滚动是你的问题。即使从屏幕上滚动离开,元素可见性也是可以的。例如,尝试使用下面的代码。至少在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

我认为您的编辑框的定位器可能不正确。

qacovj5a

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中指定的元素转到视窗。

bttbmeg0

bttbmeg03#

您可以将其用作关键字:

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

哪里,

x是向下滚动的毫秒数。

pwuypxnk

pwuypxnk4#

您有没有在IPython控制台中直接尝试过Selify WebDriver?
我试过了,如下所示,它可以向下滚动。

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

8oomwypt5#

如果您想要滚动到页面中具有滚动条的另一个元素,您可以使用下面的Execute javascript命令:

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

你只需改变‘200’,并增加它,因为你想向下滚动更多。

rwqw0loc

rwqw0loc6#

我试着按了Tab键多次,直到我落地到我的元素..!

FOR    ${i}    IN RANGE    ${Range}
    Press Keys    NONE    TAB 
END
1wnzp6jl

1wnzp6jl7#

我只需按TAB键所需的次数,选择一个元素,然后按TAB键即可结束

Click Element    ${Element}   
FOR    ${i}    IN RANGE    ${Range}// you can even provide number 
    Press Keys    NONE    TAB 
END
w9apscun

w9apscun8#

我试过以下方法,它对我很管用
填写所需信息

input text      id:userName         Joe Biden
input text      id:userEmail        Joe@att.net
input text      id:currentAddress   211 Madison Ave NY
execute javascript  window.scrollTo(0,200)
scroll element into view         id:submit

您需要在滚动之前选择该窗口

2guxujil

2guxujil9#

Execute JavaScript window.scllTo(1,500)对我来说适用于Python2;您只需将x<>0作为示例‘1’,否则它不会‘滚屏’

相关问题