【问题标题】:Robotframework Selenium2Library header overlay on element to be clicked during page scrollRobotframework Selenium2Library 标题覆盖在页面滚动期间要单击的元素上
【发布时间】:2017-02-27 06:31:41
【问题描述】:

我正在使用带有 python 基础和 Firefox 浏览器的 Robotframework selenium2Library 来自动化我们的 Web 应用程序。发生 Click 事件时会出现以下问题,

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

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

我尝试了等待直到页面可见关键字,但这仍然没有帮助,因为下一个语句,点击事件(点击元素,点击链接等)再次向上滚动到标题。

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

【问题讨论】:

  • 如果出于调试目的在执行 Click 本身之前将Sleep 30s 添加到您的页面会怎样?如果您在测试失败时能够清楚地看到页面上的内容,Capture Page Screenshot 也会有所帮助。
  • 我曾尝试在 Click 之前添加睡眠,但作为下一步,在执行 Click 事件时,页面会在顶部滚动(在标题栏下方)。捕获页面屏幕截图显示要单击的元素被标题隐藏。
  • 那么问题就找到了!如果标题隐藏了您希望点击的元素,则另一个元素会像问题所说的那样获得点击。你需要先解决覆盖问题...
  • 是的,这就是我要解决的问题。标题可见性始终是我们应用程序中的一项功能。有没有办法解决这个问题?

标签: python-2.7 robotframework selenium2library


【解决方案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

【讨论】:

    【解决方案2】:

    如果您知道该元素是可点击的,但仍想点击,请尝试使用 Click Element At Coordinates,偏移量为 0,0。它会忽略它被遮挡的事实,只会点击。

    【讨论】:

      【解决方案3】:

      我们可以使用 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

      【讨论】:

        猜你喜欢
        • 2015-09-23
        • 2014-07-30
        • 1970-01-01
        • 1970-01-01
        • 2013-01-12
        • 2018-01-11
        • 1970-01-01
        • 2016-11-14
        • 1970-01-01
        相关资源
        最近更新 更多