2014-03-04 103 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

相关问题