2014-03-04 102 views
0

我使用selenium webdriver(python)來自動化測試使用fullcalendar js插件庫的應用程序。但是,我無法自動拖放事件到日曆。selenium webdriver無法拖放fullcalendar事件

經過大量實驗後,我可以看到下面的測試代碼將事件元素移動到正確的位置。當在瀏覽器上手動完成此操作時,您懸停的日曆廣場將變爲藍色,並且該事件在丟棄時會添加到日曆中。當事件通過自動化移動時,不會發生這種情況 - 日曆方塊不會變成藍色,並且事件在丟棄時返回到其原始位置。

如何在自動化下獲得相同的拖放功能?

evt = self.sel.find_element_by_css_selector('#evt1') 
    cal_square = self.sel.find_element_by_css_selector('td[data-date=\'%s\']' % move_to_date.isoformat()) 
    ActionChains(self.sel).click_and_hold(evt).move_to_element(cal_square).perform() 
    time.sleep(10) 
    ActionChains(self.sel).release().perform() 
    time.sleep(5) 

這裏是在測試用例的鏈接這表明了問題: https://gist.github.com/jenniferlianne/9353489

回答

0

我的問題是 - 正如Micheal指出的那樣 - 在移動之後,鼠標恢復到原來的元素位置並執行釋放()。您可以提供release()函數,並在其中添加您希望「鼠標移動」的元素。

不管出於什麼原因,這個工程:

ActionChains(self.sel).click_and_hold(
     evt).move_to_element(cal_square).release(cal_square).perform() 

雖然這並不:

ActionChains(self.sel).drag_and_drop(evt, cal_square).perform() 
0

我有一個問題,隨着時間的推移而拖放。我需要在move_to_element和release之後等待一段時間,但在move_to_element.perform後,我的鼠標到達拖動元素的座標並在那裏釋放。我該怎麼辦?

過了一會兒,我試試這個:

parent = driver.find_element_by_xpath("//*[contains(text(), 'Parent')]") 
    welcome_form = driver.find_element_by_id(link.my_forms["welcome_to_pdf_form"]) 

    actions.click_and_hold(welcome_form).move_to_element(parent).click().perform() 

我真的不知道爲什麼它的工作原理。我認爲它會在點擊後產生點擊,我會得到一個錯誤,但工作正常。

+0

謝謝你,但我不能得到這個工作。見下面的答案。 – user1867622

相關問題