gpt4 book ai didi

python - 使用 selenium 2(Python 绑定(bind))在 Web 浏览器中的任意位置单击

转载 作者:太空宇宙 更新时间:2023-11-03 15:10:06 25 4
gpt4 key购买 nike

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

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

...
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()

这是我正在使用的网页中区域的屏幕截图。

enter image description here

打印元素的大小和位置如下:

{'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>

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

如何执行点击?

最佳答案

假设您的页面上没有其他任何事情会干扰点击,应该这样做:

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相对于前一个鼠标位置移动鼠标。当您使用 clickmove_to_element 时,鼠标将放置在元素的中心。 (关于这些的 Java documentation 是明确的。)

关于python - 使用 selenium 2(Python 绑定(bind))在 Web 浏览器中的任意位置单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27948420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com