4

関連する他の投稿が既にあることは知っていますが、完全な回答はありません。以下は、私が使用しているドラッグ アンド ドロップのコードです。

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

url = 'http://www.w3schools.com/html/html5_draganddrop.asp'
driver = webdriver.Firefox()
driver.get(url)
element = driver.find_element_by_id("drag1")
target = driver.find_element_by_id("div2")

ActionChains(driver).drag_and_drop(element, target).perform()

このコードの何が問題なのか教えていただけますか?

後で編集:動作する次の例が見つかりました:

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

firefox = webdriver.Firefox()

firefox.get('http://www.theautomatedtester.co.uk/demo2.html')
draggable = firefox.find_element_by_class_name("draggable")
droppable = firefox.find_element_by_name("droppable")
dragdrop = ActionChains(firefox)\
                         .drag_and_drop(draggable, droppable)

dragdrop.perform()

ページのソース(jsコード?)に関係しているに違いないのですが、何だかわかりません。

4

2 に答える 2

0

私もこれを機能させようとしましたが、switch_to_frameが役に立たないようです。追加の調査により、おそらく Selenium WebDriver は HTML 5 のドラッグ アンド ドロップを完全にはサポートしていないのではないかと考えています。

https://code.google.com/p/selenium/issues/detail?id=3604

iframe の動作をテストするために使用できる jquery のドラッグ アンド ドロップ テスト ページが見つかるかどうかを確認します。

于 2014-06-13T20:21:20.650 に答える
0

ドロップ アンド ドラッグしようとしているのは正しいです。しかし、実際の URL はhttp://www.w3schools.com/html/tryit.asp?filename=tryhtml5_draganddropです。

2 つ目は、2 つの ID がフレーム内にあるため、perform() の前にまず*switch_to_frame*を実行する必要があることです。

于 2014-03-21T06:20:17.980 に答える