2014-06-07 22 views
8

Scriptim için JavaScript kullanmak istiyorum.JavaScript Executor in Selenium WebDriver

objectJavaScriptExecutor oluşturdum, ancak executeScript() yöntemi mevcut değil. executeScript() yöntemini kullandığımda hata gösteriyor.

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

yerine JavaScriptExecutor ait JavascriptExecutor kullanmalıdır. – Ramarajan

cevap

16

Benim için çalışıyor; S numaralı büyük harfle JavaScriptExecutor üzerinde bir hata yaptınız. Bunun yerine, s küçük harfli javascriptExecutor olmalıdır.

bu kodu deneyin:

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); 

} 
} 

Bu benim için çalışıyor !! Eğer sizin için uygunsa, yeşil çeki tıklayın!

+0

Fark nedir? System.out.println (doamin_name); 'da düzeltilmiş yazım hatası; – olyv

+0

Bu benim için de çalışıyor. – Purus

+1

Onun şimdi çalışır, Hata: Ben JavaScriptExecutor örneği oluşturduk, JavascriptExecutor (küçük harf S) doğru olanıdır. – Ramarajan

1

doğru pakete ithal olduğundan emin olun:

Bu

ben kullandım koddur. Java Script ile çalışmak için

Beklenen paketi:

import org.openqa.selenium.JavascriptExecutor; 

Bu paketi deneyin. Bu hatayı çözmelidir.

+0

Zaten ithal etti. – olyv

0

Nesneyi executeScript'ten döndürebilirsiniz. Daha sonra metni dışarıdan alabilirsiniz.

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

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

Bu şekilde, yalnızca dize değil, her tür değeri döndürebilirsiniz.

1

Açıklama:

son kavanoz (ı 3.0 beta selenyum kavanozu kullanıyorum) ekleyin. Javascript kütüphane paketini içe aktarın. JavascriptExecutor'a dökerek web sürücüsü nesnesini alın ve çalıştırmak istediğiniz herhangi bir java komut dosyasını çalıştırın.

Kodu:

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

Cevabınız kesinlikle küçük bir açıklamadır. Bu, aranabilir içerik ekleyebilir, böylece diğer kullanıcılar işimizi bulabilir ve faydalanabilir. –

+0

Anlaştık, birçok cevabın olduğunu düşündüm, bu yüzden kodun ne dediği hakkında çok az fikirleri var. Biraz daha bilgi eklendi. –