gpt4 book ai didi

python - Selenium - Firefox 的 MoveTargetOutOfBoundsException

转载 作者:太空狗 更新时间:2023-10-29 21:41:46 29 4
gpt4 key购买 nike

我在 Firefox Webdriver(Chrome、IE 运行良好)上的函数 move_to_element 有问题

driver = webdriver.Firefox()
driver.get("https://stackoverflow.com")
time.sleep(5)
source_element = driver.find_element_by_xpath('//*[@id="footer"]/div/ul/li[1]/a')
ActionChains(driver).move_to_element(source_element).perform()

我正在使用这些版本:geckodriver - 0.17.0//Firefox - 54.0//selenium - 3.4.3

运行此脚本后,输出显示:

selenium.common.exceptions.MoveTargetOutOfBoundsException: Message: (134.96666717529297, 8682.183013916016) is out of bounds of viewport width (1268) and height (854) 

最佳答案

我认为这里的正确答案很幸运,因为他们正在寻找的元素恰好位于页面底部,并没有真正解释为什么这种情况在 Firefox 中经常发生。

Firefox 以外的浏览器将 Webdrivers move_to_element 操作视为滚动到带有元素的页面的一部分,然后将鼠标悬停在它上面。 Firefox 似乎已经采取了 hardline stance move_to_element 只是悬停并等待 scroll解决这个问题的行动。

现在你必须像前面的回答中提到的那样使用 javascript 解决这个错误,但我建议使用这样的东西而不是任意(我猜这个例子是一个页脚)滚动到页面底部并希望对象仍在查看。

    def scroll_shim(passed_in_driver, object):
x = object.location['x']
y = object.location['y']
scroll_by_coord = 'window.scrollTo(%s,%s);' % (
x,
y
)
scroll_nav_out_of_way = 'window.scrollBy(0, -120);'
passed_in_driver.execute_script(scroll_by_coord)
passed_in_driver.execute_script(scroll_nav_out_of_way)

后来

source_element = driver.find_element_by_xpath('//*[@id="footer"]/div/ul/li[1]/a')
if 'firefox' in driver.capabilities['browserName']:
scroll_shim(driver, source_element)
# scroll_shim is just scrolling it into view, you still need to hover over it to click using an action chain.
actions = ActionChains(driver)
actions.move_to_element(source_element)
actions.click()
actions.perform()

关于python - Selenium - Firefox 的 MoveTargetOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44777053/

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