微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Web浏览器中的任意位置单击硒2(Python绑定)

我在尝试找到一种在特定点在Web浏览器窗口中发送左键单击的方法时感到困惑.我正在使用Selenium selenium-2.44.0和Python 2.7.我的最终目标是能够单击窗口中的某些区域,但是现在,我只想确保可以完全单击.我认为点击链接所在的区域是个好主意,因为这样我就可以确认点击的确发生了(即,我将被带到另一个html页面).

满足所有先决条件,我能够启动浏览器并访问和操纵各种Web元素.根据我在帮助中找到的内容,应该使用move_by_offset方法将鼠标光标移到某个方向.但是,当我运行代码时,不会发生单击(或会发生单击,但是未单击url链接并且不会打开新页面).我什至无法验证点击是否发生.例如,在正常浏览器会话中单击注销链接时,将发生注销操作.

...
homeLink = driver.find_element_by_link_text("Home")
homeLink.click() #clicking on the Home button and mouse cursor should? stay here
print homeLink.size, homeLink.location

helpLink = driver.find_element_by_link_text("Help")
print helpLink.size, helpLink.location

action = webdriver.common.action_chains.ActionChains(driver)
action.move_by_offset(150,0) #move 150 pixels to the right to access Help link
action.click()
action.perform()

这是我正在使用的网页区域的屏幕快照.

元素的大小和位置如下所示:

{'width': 39, 'height': 16} {'y': 47, 'x': 341}
{'width': 30, 'height': 16} {'y': 47, 'x': 457}

页面后面的HTML代码在下面,如果值得一看.

<a href="/web/">Home</a>
|
<a href="/web/Account/logoff">logout</a>
|
<a href="#" onclick="HelpFile.open();">Help</a>

我知道我可以通过多种方式找到一个元素来访问链接,但是我试图在某个位置执行单击,并使用link元素只是为了验证单击是否真正发生.

如何执行点击?

解决方法:

假设您的页面上没有其他事情会影响点击,那么应该这样做:

homeLink = driver.find_element_by_link_text("Home")
homeLink.click() #clicking on the Home button and mouse cursor should? stay here
print homeLink.size, homeLink.location

helpLink = driver.find_element_by_link_text("Help")
print helpLink.size, helpLink.location

action = webdriver.common.action_chains.ActionChains(driver)
action.move_to_element_with_offset(homeLink, 150, 0) #move 150 pixels to the right to access Help link
action.click()
action.perform()

如果希望鼠标位置相对于元素,则应使用move_to_element_with_offset.否则,move_by_offset相对于先前的鼠标位置移动鼠标.使用click或move_to_element时,鼠标将放置在元素的中心. (关于这些的Java documentation是明确的.)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐