我无法使用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拖放工作?
答案 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()
答案 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_at
,mouse_move_at
和mouse_up_at
的{{3}}。