简体   繁体   English

为什么我不能使用 Python 在 Selenium Chromedriver 中拖放?

[英]Why can't I drag and drop in Selenium Chromedriver with Python?

I can't drag and drop in Selenium with the latest Chromedriver.我无法使用最新的 Chromedriver 在 Selenium 中拖放。 selenium='3.141.0' python 3.7 Chrome = 74.0.3729.169 ChromeDriver =latest selenium='3.141.0' python 3.7 Chrome = 74.0.3729.169 ChromeDriver =latest

The below code executed successfully, but the items are not being dragged from source to destination.下面的代码成功执行,但项目没有从源拖到目的地。 I am also not getting any error at all.我也没有收到任何错误。 I tried all of the below solutions, one by one, but none of working them are at all.我一一尝试了以下所有解决方案,但根本没有任何解决方案。

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

cd = webdriver.Chrome('Chromedriver.exe')
cd.get('https://www.seleniumeasy.com/test/drag-and-drop-demo.html')
cd.maximize_window()

elements = cd.find_element_by_id('todrag')
drag_item = elements.find_elements_by_tag_name('span')
drag_to = cd.find_element_by_id('mydropzone')

# Solution 1 (not working)
for i in drag_item:
   action = ActionChains(cd)
   action.drag_and_drop(i, drag_to).perform() # this is not working

   # Solution 2 (not working)
   ActionChains(cd).click_and_hold(i).move_to_element(drag_to).release(
    drag_to).perform()


  # Solution 3 (not working, as you need to download the js files)
  jquery_url = "http://code.jquery.com/jquery-1.11.2.min.js"
  with open("jquery_load_helper.js") as f:
    load_jquery_js = f.read()

 with open("drag_and_drop_helper.js") as f:
    js = f.read()
 cd.execute_async_script(load_jquery_js, jquery_url)

 cd.execute_script(js + "$(\'arguments[0]\').simulateDragDrop({ dropTarget: \"arguments[1]\"});", i, drag_to)

I think there is something wrong with the site because this example I found on the web seems to work:我认为该网站有问题,因为我在网上找到的这个示例似乎有效:

import time
from selenium import webdriver
from selenium.webdriver import ActionChains

# Create chrome driver.
driver = webdriver.Chrome()

# Open the webpage.
driver.get("https://openwritings.net/sites/default/files/selenium-test-pages/drag-drop.html")

# Pause for 5 seconds for you to see the initial state.
time.sleep(5)

# Drag and drop to target item.
##################################
drag_item = driver.find_element_by_id("draggable")
target_item = driver.find_element_by_id("droppable")

action_chains = ActionChains(driver)
action_chains.drag_and_drop(drag_item, target_item).perform()
##################################

# Pause for 10 seconds so that you can see the results.
time.sleep(10)

# Close.
driver.quit()

Hopefully, that example helped you!希望那个例子对你有帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM