我使用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应用程序中的一项功能,由于此脚本失败,有人可以帮助解决此问题并使点击事件成功执行吗?
答案 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