2011-06-17 14 views
8

Ho un collegamento su una pagina che appare solo quando si passa sopra un determinato elemento. Ma non riesco a capire come emulare questo e quindi fare clic sul link in modo da poter testare cetriolo utilizzando Capybara e selenio.Utilizzo di Capibara e selenio per passare con il mouse su un elemento

Qualcuno sa come fare? Ho provato ad eseguire javascript e anche a provare a parlare direttamente con il driver selenio, ma finora non ho molta fortuna ...

risposta

2

Utilizzare il Selenium fireEvent su un evento mouseover e quindi fare una pausa per il tempo di hover richiesto.

+0

Hmm ... Devo fare qualcosa di stupido. Ho provato la riga: page.driver.browser.fireEvent (selector, "mouseover") nel mio passaggio web ma ottengo il seguente errore: metodo non definito 'fireEvent 'per # (NoMethodError) qualche idea? –

+0

@borrible hai qualche codice di esempio per fare questo? Ho lo stesso problema. – Chet

0

Ho lavorato su uno simile che ho seguito in seguito, questo potrebbe aiutarti.

Utilizzo di selenio IDE.
1. Passare alla pagina richiesta.
2. Avviare l'IDE di selenio e ottenere la destinazione del collegamento.
3. Modificare il comando su mouseOver Fare doppio clic sul comando in Selenium IDE.
4. Mostra il collegamento che ti serviva.
5. Di nuovo Avvia la registrazione e registra il collegamento richiesto.

Quando si fa doppio clic sul comando mouseOver si crea la simulazione del mouse tramite IDE e si può utilizzare il mouse per registrare il collegamento popup.

Grazie

0

ho finalmente riusciti a ottenere Capybara + il conducente Selenio a "hover" su un elemento. Questo è il codice che sto usando:

module Capybara 
    module Node 
    class Element 
     def hover 
     @session.driver.browser.action.move_to(self.native).perform 
     end 
    end 
    end 
end 
+2

Non funziona per me –

3

Questa domanda ha qualche anno, quindi la risposta potrebbe essere cambiata. Nelle versioni più recenti di Capybara ci sono diversi modi per farlo, a seconda del driver che stai utilizzando.

per il selenio, è possibile eseguire javascript:

page.execute_script '$("#element").trigger("mouseover")' 

recenti versioni di selenio-WebDriver supportano un metodo hover:

find('#element').hover 

Per capibara-webkit, il driver supporta eventi di attivazione sull'elemento :

find('#element').trigger(:mouseover) 

Originariamente ho trovato la risposta a questa domanda da here e here.

+0

il secondo modulo ('.hover') attiva le regole css': hover', le altre due non sembrano (attivano solo gestori javascript dell'evento mouseover). Io uso '.hover' ad es. rendere invisibili i collegamenti invisibili prima di fare clic su di essi. – artm

Problemi correlati