2014-06-07 7 views
8

스크립트에 JavaScript를 사용하고 싶습니다.Selenium WebDriver의 JavaScript Executor

나는 objectJavaScriptExecutor으로 만들었지 만 executeScript() 방법이 없습니다. executeScript() 메서드를 사용하면 오류가 표시됩니다.

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

내가 대신 JavaScriptExecutor의 JavascriptExecutor를 사용해야합니다. – Ramarajan

답변

16

나를 위해 작동합니다. JavaScriptExecutor에 대문자 S이있는 실수가있었습니다. 대신 javascriptExecutor에 소문자 s을 사용해야합니다.

이 코드를보십시오 :

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

} 
} 

이 나를 위해 작동합니다! 그것이 당신을 위해 녹색 체크를 클릭하십시오!

+0

차이점은 무엇입니까? 'System.out.println (doamin_name);의 오타가 수정되었습니다; – olyv

+0

이것도 나를 위해 작동합니다. – Purus

+1

그것의 작품은, 실수는 : JavaScriptExecutor의 인스턴스를 만들었습니다, JavascriptExecutor (소문자 S)가 올바른 것입니다. – Ramarajan

1

올바른 패키지를 가져온 확인하십시오 :

내가 사용한 코드입니다. 자바 스크립트 작업을위한

예상 패키지 :

import org.openqa.selenium.JavascriptExecutor; 

이 패키지를 사용해보십시오. 이렇게하면 오류가 해결됩니다.

+0

그는 이미 수입했습니다. – olyv

0

executeScript에서 Object를 반환 할 수 있습니다. 나중에 텍스트를 가져올 수 있습니다.

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

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

이렇게하면 문자열뿐만 아니라 모든 유형의 값을 반환 할 수 있습니다.

1

설명 :

최신 항아리 (I 3.0 베타 셀레늄 항아리를 사용하고 있습니다)를 추가합니다. 자바 스크립트 라이브러리 패키지를 가져옵니다. JavascriptExecutor에 캐스팅하여 웹 드라이버 객체를 가져 와서 실행할 모든 Java 스크립트를 실행하십시오.

코드 :

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

당신의 대답은 확실히 약간의 설명 가치가있다. 이렇게하면 검색 가능한 콘텐츠가 추가되어 다른 사용자가 콘텐츠를 찾고 작업에서 이익을 얻을 수 있습니다. –

+0

동의, 나는 많은 답변이 있다고 생각했기 때문에 모두 코드가 말하는 것을 거의 모른다. 더 많은 정보를 추가했습니다. –

관련 문제