无法使用机器人框架向下滚动网页

Posted

技术标签:

【中文标题】无法使用机器人框架向下滚动网页【英文标题】:Unable to scroll down the web page using the Robot Framework 【发布时间】:2015-11-04 00:57:32 【问题描述】:

我正在使用 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)

我该如何解决这个问题?

【问题讨论】:

在尝试滚动之前尝试选择窗口,selenium.selectWindow("id=theWindowID"); 尝试使用“焦点”关键字!它对我有帮助! 【参考方案1】:

您的滚动代码看起来不错。但是,我不认为滚动是你的问题。元素可见性是好的,即使它从屏幕上滚动出来。例如,试试这个代码。至少在 Chrome 页面在 Input Text 关键字处向上滚动

*** Settings ***
Library         Selenium2Library

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

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

【讨论】:

【参考方案2】:

我用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中指定的元素获取到视口。

【讨论】:

我怎样才能得到它的返回值【参考方案3】:

您可以将其用作关键字:

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

在哪里,

x 是向下滚动的毫秒数。

【讨论】:

毫秒?这不是毫秒。您还应该提到 scrollTop() 是一个 jQuery 函数。【参考方案4】:

你有没有在 IPython 控制台中直接在 Selenium webdriver 中尝试过?

我已经尝试如下,它可以向下滚动。

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

【讨论】:

【参考方案5】:

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

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

您可以更改“200”并根据需要向下滚动更多。

【讨论】:

以上是关于无法使用机器人框架向下滚动网页的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView - 无法向下滚动很远(即使我已将 contentsize 设置为 1000)[重复]

内容溢出时无法滚动

无法使分屏滚动到底部

React Native Expo - 无法向下滚动以获取更多内容

如何使用机器人框架和 python 在不滚动的情况下获取所有匹配的元素?

无法滚动在移动设备上使用 Xamarin.Forms 创建的 xaml 页面