SeleniumでUIの自動テストをする際、途中でJavascriptを実行したくなるときがあります。

たとえば

  • 画面のスクロール
  • ブックマークレット起動

などなど。

そんなときのやり方です。

javascriptを実行する

JavascriptExecutorを使います。

package Example.example;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class AppTest {
    private static WebDriver driver;

    public AppTest() {
    }

    @Before
    public void before() {
        System.out.println("before start");
        System.setProperty("webdriver.chrome.driver", "/Users/yoshikiito/workspace/webdriver/chromedriver");
        driver = new ChromeDriver();
    }

    @Test
    public void Test() {
        System.out.println("test start");
        driver.get("http://google.com");
        JavascriptExecutor jexec = (JavascriptExecutor) driver;
            jexec.executeScript("alert('hoge')");
    }

    @After
    public void after() {
        driver.quit();
    }
}

これをJUnitで実行すると・・・

Google

この通り。

jexec.executeScript();の引数部分のコードが実行されます。

参考

How to execute JavaScript in Selenium WebDriver