【发布时间】:2015-03-12 23:02:30
【问题描述】:
我在试图找到一种方法来在特定点在网络浏览器窗口中发送左键时感到困惑。我正在使用 Selenium selenium-2.44.0 和 Python 2.7。我的最终目标是能够点击窗口中的某些区域,但现在我只想确保我能够点击。我认为点击链接所在的区域是个好主意,因为这样我就可以验证点击确实发生了(即,我将被带到另一个 html 页面)。
满足所有先决条件,我能够启动浏览器并访问和操作各种网络元素。根据我在帮助中找到的内容,应该使用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>
我知道我可以通过多种方式查找元素来访问链接,但我试图在某个位置执行点击,并且我使用链接元素只是为了验证点击确实发生了。
如何执行点击?
【问题讨论】:
-
您是如何计算 150 像素偏移以访问帮助链接的?
-
@shri046,我发现主页链接和帮助链接的 x 坐标之间的差异(在问题正文中打印 element.size)。我还通过使用 Firefox 的 MeasureIt 插件验证了这一点。
-
根据我的经验,点击总是发生在元素的中间(中心)。所以
homeLink.click()的鼠标指针可能会位于主链接元素的 x + (width/2) 处。在计算需要移动到的最终偏移量时,您可能必须考虑到这一点。 -
这是一个非常有效的观点,谢谢。我将使用各种偏移值进行更多测试。
标签: python python-2.7 selenium selenium-webdriver