2014-06-07 19 views
8

Desidero utilizzare JavaScript per il mio script.Esecutore JavaScript in Selenium WebDriver

Ho creato un object di JavaScriptExecutor, ma il metodo executeScript() non è presente. Mostra un errore quando utilizzo il metodo executeScript().

Questo è il codice che ho usato:

import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.JavascriptExecutor; 


public class GetDomain_JS { 

    public static void main(String[] args) { 
     WebDriver driver=new FirefoxDriver(); 
     driver.get("http://only-testing-blog.blogspot.in/2013/11/new-test.html"); 
     driver.manage().window().maximize(); 

     System.out.println(driver.getCurrentUrl()); 

     JavaScriptExecutor js=(JavaScriptExecutor) driver; 

     String domain_name=(String) js.executeScript("return document.domain"); 

       System.out.println(doamin_name); 

    } 
} 
+0

dovrei usare JavascriptExecutor invece di JavaScriptExecutor. – Ramarajan

risposta

16

Funziona per me; hai avuto un errore su JavaScriptExecutor con la maiuscola S. Invece, dovresti avere javascriptExecutor con la minuscola s.

provare questo codice:

import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.JavascriptExecutor; 
import org.openqa.selenium.WebDriver; 


public class GetDomain_JS { 

public static void main(String[] args) { 
    WebDriver driver=new FirefoxDriver(); 
    driver.get("http://only-testing-blog.blogspot.in/2013/11/new-test.html"); 
    driver.manage().window().maximize(); 

    System.out.println(driver.getCurrentUrl()); 

    JavascriptExecutor js=(JavascriptExecutor) driver; 

    String domain_name=(String) js.executeScript("return document.domain"); 

      System.out.println(domain_name); 

} 
} 

Questo funziona per me !! Si prega di fare clic sul controllo verde se lo fa per te!

+0

Qual è la differenza? Corretto errore di battitura in 'System.out.println (doamin_name);'? – olyv

+0

Funziona anche per me. – Purus

+1

Ora funziona, L'errore è: Ho creato l'istanza di JavaScriptExecutor, JavascriptExecutor (S minuscola) è quella corretta. – Ramarajan

1

prega di assicurarsi di aver importato il pacchetto corretto.

pacchetto atteso per lavorare con Java Script:

import org.openqa.selenium.JavascriptExecutor; 

Prova questo pacchetto. Questo dovrebbe risolvere il tuo errore.

+0

Ha già importato. – olyv

0

È possibile restituire un oggetto da executeScript. Più tardi puoi ricavarne il testo.

Object domain_name = js.executeScript("return document.domain"); 

System.out.println(domain_name.toString()); 

In questo modo, è possibile restituire valori di qualsiasi tipo e non solo stringa.

1

Spiegazione:

Aggiungi ultimo barattolo (sto usando 3.0 beta vaso selenio). Importa il pacchetto della libreria Javascript. Porta l'oggetto del driver Web eseguendo il casting su JavascriptExecutor ed esegui qualsiasi script java che desideri eseguire.

Codice:

import com.thoughtworks.selenium.webdriven.JavascriptLibrary; 
Object ob = ((JavascriptExecutor) webDriver()).executeScript("return document.domain").toString(); 
System.out.println(ob); 
+0

La tua risposta vale sicuramente una piccola spiegazione. Ciò aggiungerebbe contenuto ricercabile, in modo che altri utenti lo trovino e traggano vantaggio dal nostro lavoro. –

+0

D'accordo, ho pensato che ci sono molte risposte quindi tutti hanno poca idea di ciò che dice il codice. Aggiunte alcune informazioni in più. –

Problemi correlati