【发布时间】:2015-12-14 17:56:05
【问题描述】:
如果在动作链开始执行之前所需元素之一不存在,是否可以在 selenium 中创建动作链?
例如,我正在尝试在 selenium 中执行拖放操作。问题是,拖放的目标仅在发生拖动时才存在。拖放的直观解决方案似乎正在做:
source = driver.find_element(...)
target = driver.find_element(...)
ActionChains(driver).drag_and_drop(source, target)
这将不起作用,因为在拖动开始之前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 中实现这样的目标?
【问题讨论】:
标签: python selenium selenium-webdriver