Robotframework Selenium2Library标题覆盖在页面滚动期间要单击的元素上

时间:2016-10-18 05:53:36

标签: python-2.7 robotframework selenium2library

我使用Robotframework selenium2Library和python base以及Firefox浏览器来自动化我们的Web应用程序。在发生Click事件时遇到以下问题,

Web页面应用程序中的标题在页面滚动期间是不可移动的(即,每当页面滚动发生时,标题始终可用于用户视图,只有内容被滚动)现在问题是,当一个元素即将到来时单击在页面视图中不可用,单击事件会尝试滚动页面以将元素置于网页顶部,这正好位于标题下方(重叠),并且单击事件永远不会发生,从而超出异常。

WebDriverException:消息:元素在点(1362.63330078125,15.5)处不可点击。其他元素将收到点击:https://url/url/chat/chat.asp',' popup',' height = 600,width = 680,scrollbars = no,resizable = yes,directories = no,menubar = no,status = no,toolbar = no'));">

我已经尝试了Wait Until Page is Visible关键字,但是这仍然没有帮助,因为下一个语句Click事件(Click Element,Click Link等)再次向上滚动到标题。

标题始终可见是我们的Web应用程序中的一项功能,由于此脚本失败,有人可以帮助解决此问题并使点击事件成功执行吗?

3 个答案:

答案 0 :(得分:1)

因此,如果我理解正确,当您单击元素页面时,向下滚动就足以使其可见。由于您具有透明标题,因此元素位于其下方且无法单击。我的解决方案是创建一个向下滚动的新关键字,直到元素可见,然后向下滚动一点。

*** Settings ***
Library      Selenium2Library

*** Keywords ***
Scroll And Click
    [Arguments]           ${element}
    Execute Javascript    window.document.evaluate("//*[@id='${element}']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.scrollIntoView(true);
    Execute Javascript    window.scrollBy(0, -200)
    Click Element         ${element}

*** Test Cases ***
Scrolltest
    Open Browser        http://www.stackoverflow.com/    gc
    Scroll And Click    hireme

答案 1 :(得分:0)

如果您知道该元素是可单击的,并且只想单击,则尝试使用偏移量为0,0的“单击坐标处的元素”。它会忽略它被遮盖并点击的事实。

答案 2 :(得分:0)

我们可以使用 Execute JavaScript 来点击元素。我在 Python3 中使用这个。

${Element} = Get WebElement | xpath=//input[@id=image]
Execute JavaScript | arguments[0].click();  | ARGUMENTS  |  ${Element}

使用 ID/xpath 作为网络定位器的参考: Robot Framework: Click Element using Execute JavaScript