Python Selenium WebDriver拖放

时间:2012-01-12 10:51:27

标签: python selenium webdriver

我无法使用Python WebDriver绑定进行拖放操作。我在Mac OS X上使用谷歌浏览器和Firefox。有一个线程here,其中有人有类似的问题。

我尝试过使用ActionsChains

from selenium import webdriver
from selenium.webdriver import ActionChains
driver = webdriver.Chrome()
actionChains = ActionChains(driver)

actionChains.drag_and_drop(source, target).perform()

您是否设法让Python WebDriver拖放工作?

4 个答案:

答案 0 :(得分:11)

为了给出更新的答案,我已经确认这确实可以在Mac上运行。

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Firefox()
driver.get("your.site.with.dragndrop.functionality.com")
source_element = driver.find_element_by_name('your element to drag')
dest_element = driver.find_element_by_name('element to drag to')
ActionChains(driver).drag_and_drop(source_element, dest_element).perform()

Reference

答案 1 :(得分:5)

操作链目前不适用于Mac。如果你在Linux或Windows上尝试过上面的代码,那就行了。 ChromeDriver即将完成这项工作,但仍需要工作AFAIK。

答案 2 :(得分:2)

action = ActionChains(driver)
action.click_and_hold(source).pause(4).move_to_element(target).release(target).perform()

这也会拖放。

答案 3 :(得分:0)

如果没有源和目标的示例HTML,很难确切地说出来。

您可以尝试使用drag_and_drop_by_offset(self, source, xoffset, yoffset),而使用较小的偏移参数值。有时可行。

您还可以尝试调整使用mouse_down_atmouse_move_atmouse_up_at的{​​{3}}。