gpt4 book ai didi

python - 当所需元素尚不存在时,Selenium ActionChains

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

如果在操作链开始执行之前所需元素之一不存在,是否可以在 selenium 中创建操作链?

例如,我正在尝试在 selenium 中执行拖放操作。问题是放置的目标仅在发生拖动时才存在。拖放的直观解决方案似乎正在做:

source = driver.find_element(...)
target = driver.find_element(...)
ActionChains(driver).drag_and_drop(source, target)

这将不起作用,因为在拖动开始之前目标并不存在。

我尝试过做一些事情:

source = driver.find_element(...)
drag_and_drop = ActionChains(driver)
drag_and_drop.click_and_hold(source)
drag_and_drop.move_by_offset(10, 10)
drag_and_drop.perform()

target = driver.find_element(...)
drag_and_drop.move_to_element(target)
drag_and_drop.release()
drag_and_drop.perform()

这也行不通。似乎第一次执行后鼠标被释放,这会导致目标消失。这似乎表明需要一个带有单个 perform() 调用的单个操作链。我尝试研究是否有任何方法可以在需要操作链的步骤时延迟查找元素,但我找不到任何方法来做到这一点。

有什么方法可以在 Selenium 中实现类似的功能吗?

最佳答案

这实际上是一个误诊问题的案例。根本问题实际上在于 selenium 目前不支持原生 HTML5 拖放,这在 this answer 中有更好的解释。 。因此,无论所需元素是否存在,给出的两个示例都无法达到此目的,即使它们看起来应该如此。

由于操作链开头不存在该元素的问题,解决方案实际上是将其分成多个部分,并使用多个 perform() 调用,如第二个示例所示。同样,在多次 perform() 调用不起作用的问题中得出的结论是不准确的,并且是误解真正问题的结果。

关于python - 当所需元素尚不存在时,Selenium ActionChains,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32637521/

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