>Java >java지도 시간 >Java의 Selenium WebDriver 내에서 JavaScript 코드를 어떻게 실행할 수 있나요?

Java의 Selenium WebDriver 내에서 JavaScript 코드를 어떻게 실행할 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-10-24 21:23:29447검색

How can I execute JavaScript code within Java's Selenium WebDriver?

Selenium WebDriver Java와 함께 JavaScript 사용

Java를 통해 WebDriver(Selenium 2)와 함께 JavaScript를 활용하는 데 관심이 있습니다.

명령어 실행 위치

참고하신 "$ ./go webdriverjs" 명령은 WebDriverJs 프로젝트가 위치한 디렉터리에서 실행되어야 합니다.

WebDriver에 JavaScript 통합

그러나 WebDriverJs는 WebDriver를 위한 별도의 언어 바인딩이므로 JavaScript에서 테스트 생성이 가능합니다. Java의 WebDriver 내에서 JavaScript를 실행하려면 다음 단계를 따르십시오.

<code class="java">WebDriver driver = new AnyDriverYouWant();
if (driver instanceof JavascriptExecutor) {
    ((JavascriptExecutor)driver).executeScript("yourScript();");
} else {
    throw new IllegalStateException("This driver does not support JavaScript!");
}</code>

또는:

<code class="java">WebDriver driver = new AnyDriverYouWant();
JavascriptExecutor js;
if (driver instanceof JavascriptExecutor) {
    js = (JavascriptExecutor)driver;
} // else throw...

// later on...
js.executeScript("return document.getElementById('someId');");</code>

executeScript() 메소드는 함수 호출과 일반 JavaScript 코드를 모두 허용합니다. 다음 예에서 설명한 것처럼 값을 반환하고 복잡한 인수를 전달하는 기능을 제공합니다.

  1. WebElement 반환:
<code class="java">js.executeScript("return document.getElementById('someId');");</code>
  1. 테두리 추가 WebElement:
<code class="java">WebElement element = driver.findElement(By.anything("tada"));
js.executeScript("arguments[0].style.border='3px solid red'", element);</code>
  1. 입력 요소를 라디오 버튼으로 변경:
<code class="java">js.executeScript(
         "var inputs = document.getElementsByTagName('input');" +
         "for(var i = 0; i < inputs.length; i++) { " +
         "    inputs[i].type = 'radio';" +
         "}" );</code>

위 내용은 Java의 Selenium WebDriver 내에서 JavaScript 코드를 어떻게 실행할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.