2015-08-17 5 views

risposta

12

myWebElement.click();

Azioni (driver) .click (myWebElement) .build(). Perform();

Sia metodo click e la classe delle azioni appartengono alla classe webdriver.Action viene utilizzato per emulare i gesti utente complesse (comprese le azioni come ad esempio trascinare e rilasciare o facendo clic su più elementi con il tasto di controllo, ecc) Metodo .Clicca viene utilizzato per fare clic su il rispettivo webElement (pulsanti, collegamenti, ecc.) .Selenium Webdriver utilizza il supporto nativo del browser per mappare l'elemento DOM sull'oggetto WebElement utilizzando locatori come id/xpath, ecc.

JavaScriptExecutor è un'interfaccia che fornisce il meccanismo per eseguire Javascript tramite il driver del selenio. Fornisce i metodi "executescript" & "executeAsyncScript", per eseguire JavaScript esterno nel contesto del frame o finestra correntemente selezionato. Nel caso di executescript restituirà un elemento DOM che viene poi convertito in WebElement

Il clic simulato da WebDriver su un browser è simile a ciò che l'utente attuale fare rispetto a quello invocato utilizzando JavaScript

scenario di esempio:

<html> 
<body> 
<button type = "button" id ="test" style = "display:none"> clickme </button> 
</body> 
</html> 

Se si fa clic sul "click me" pulsante usando la funzione click nel web autista si ottiene un org.openqa.selenium.ElementNotVisibleException (elemento eccezione non visibile) che è corretto come l'elemento è presente nel DOM, ma non viene visualizzato all'utente come lo stile css display:none è impostato

((JavascriptExecutor)driver).executeScript("$('#test').click();");//or 
((JavascriptExecutor)driver).executeScript("document.getElementById('test').click();"); 

Se si utilizza il javascript sopra/jquery per fare clic sull'elemento, quindi farà clic sul pulsante indipendentemente dal fatto che il pulsante sia visibile o meno, il che è sbagliato perché l'utente non sarà in grado di vedere/fare clic sul pulsante, ma il tuo script passerà. Quindi la morale è provare a utilizzare le funzioni di webdriver laddove possibile invece di usare javascript

Spero che questo ti aiuti.Tornare indietro se hai qualche domanda

+1

Grazie Vicky per il chiarimento. –

+0

Bella risposta Vicky! –