2016-01-12 9 views
6

Sto utilizzando selenium2library per i test di automazione per l'azione di trascinamento. Sono in esecuzione su Windows 8 64 bit, selenio 2.48.0, ride.py. Browser utilizzato per testare: Firefox e Chrome ultima versione stabileIl selenio si blocca quando si utilizza actionchain(). Move then actionchain.click o mouse_up

quello che ho fatto è stato quello di creare una pagina html fittizio con testo di input e un link, e provare a trascinare che collegano nel testo di ingresso

Ecco il codice html:

<div id="wrapper"> 

<input id="target" type="text" style="width:200px; height:50px" /> 
</div> 
<a id="source" href="http://google.com" >drag me </a> 

e qui è il mio codice Python per l'automazione:

class CustomSeleniumLibrary(Selenium2Library): 
... 
    def test_drag(self): 
     self.open_browser("http://localhost:8080/a.html", "firefox") 
     source = self._element_find("//a[@id='source']", True, True) 
     target = self._element_find("//input[@id='target']", True, True) 
     drag = ActionChains(self._current_browser()).click_and_hold(source) 
     moveDum = ActionChains(self._current_browser()).move_by_offset(1,1) 
     move = ActionChains(self._current_browser()).move_to_element_with_offset(target,1,1) 
     #I have also tried ActionChains().drag_and_drop().perform() or make a dummy move move_by_offset followed by move_to_element_with_offset but no use 
     drag.perform() 
     moveDum.perform() 
     move.perform() 

Quello che ho trovato è quando la finitura spostamento o MOUSE_DOWN) finitura (, l'azione successiva non è perfor med, Vedo che il link viene mantenuto, ma nessuna azione di spostamento viene eseguita fino a quando non metto manualmente il mouse sul browser. Flicks ride.py dell'interfaccia utente in quel momento e la richiesta: 16:24:47.042 : DEBUG : POST http://127.0.0.1:58095/hub/session/fa7590b6-396f-4cb5-a08a-e35138a9216e/moveto {"sessionId": "fa7590b6-396f-4cb5-a08a-e35138a9216e", "element": "{6586b4ae-3c51-4e18-bb40-e006af369768}", "xoffset": 1, "yoffset": 1}

si blocca per sempre fino a quando mi muovo il mouse manualmente sul browser

Fare qualcuno di voi lo stesso problema, o ho fatto qualcosa di sbagliato? E hai qualche suggerimento per usare la funzionalità di draganddrop usando la selenium2library di robotframework?

Con i migliori saluti, Dan

+0

È necessario eseguire comandi in una catena uno per uno come singola azione invece di chiamare il metodo 'perform()' separatamente per ogni ... – Andersson

risposta

2

non posso controllare, ma mi ricordo ActionChains opere in questo modo:

actions = ActionChains(self._current_browser()) 
actions.click_and_hold(source) 
actions.move_by_offset(1,1) 
actions.move_to_element_with_offset(target,1,1) 
actions.perform() 

Fammi sapere se questo codice funziona in modo non corretto

+0

Grazie per la risposta, ma anche io l'ho provato e non ha funzionato. Quello che sembra strano è quando eseguo click_and_hold o mouse_down quindi seguo move_to_element (another_element), ride.py mostra sospeso e quando provo a connettermi al localserver che crea la sessione ed elabora l'azione di spostamento, si blocca anche (vedi la richiesta Ho postato nella domanda) –

+0

Utilizzi il browser 'Chrome'? – Andersson

+0

Io uso sia Chrome che Firefox –

Problemi correlati