Selenium

Selenide 逆引き Code Tips

IE11 で動作しないとき

インターネットオプションの保護モード有効や拡大率100%、 レジストリ FEATURE_BFCACHE の設定をしても動作しない状況になりました。 具体的には IE11 が立ち上がり自動入力はできるものの element.click() が効かないという事象です。 以下のコードで動作確認できました。(2018年11月)

  • Windows 10 Pro (64 bit)

  • IEDriverServer.exe (32 bit)

public static void useIE11() {
    Configuration.browser = WebDriverRunner.INTERNET_EXPLORER;
    System.setProperty("webdriver.ie.driver", "C:/path/to/webdrivers/IEDriverServer.exe"); // 32bit

    DesiredCapabilities dc = new DesiredCapabilities();
    dc.setCapability("nativeEvents", false);
    dc.setCapability("unexpectedAlertBehaviour", "accept");
    dc.setCapability("ignoreProtectedModeSettings", true);
    dc.setCapability("disable-popup-blocking", true);
    dc.setCapability("enablePersistentHover", true);
    InternetExplorerOptions opts = new InternetExplorerOptions();
    opts.merge( dc );
    InternetExplorerDriver driver = new InternetExplorer( opts );
    WebDriverRunner.setWebDriver( driver );
}

設定

// ブラウザウィンドウのサイズ
Configuration.browserSize = "1280x1024";

// open() を呼んだときのベースURL
Configuration.baseUrl = "http://localhost:8080";

// 自動操作の続行待ちタイムアウト 30秒
Configuration.timeout = 30000;

// テストが終了後もブラウザを開いたままにする
Configuration.holdBrowserOpen = true;

// スクリーンショット等の出力先
Configuration.reportsFolder = "path/to/folder";

// テストが失敗したときにレポートを出力しない
Configuration.savePageSource = false;

ウィンドウ

最後に開いたウィンドウにスイッチする

// newly opened window
for (String winHandle : driver.getWindowHandles()) {
    driver.switchTo().window(winHandle);
}

タイトルを指定してウィンドウをスイッチする

public class Utility {
    public static WebDriver getHandleToWindow(String title) {
        WebDriver popup = null;
        Set<String> windowIterator = WebDriverInitialize.getDriver().getWindowHandles();
        System.err.println("No of windows :  " + windowIterator.size());
        for (String s : windowIterator) {
            String windowHandle = s;
            popup = WebDriverInitialize.getDriver().switchTo().window(windowHandle);
            System.out.println("Window Title : " + popup.getTitle());
            System.out.println("Window Url : " + popup.getCurrentUrl());
            if (popup.getTitle().equals(title) ) {
                System.out.println("Selected Window Title : " + popup.getTitle());
                return popup;
            }
        }
        System.out.println("Window Title :" + popup.getTitle());
        System.out.println();
        return popup;
    }
}
WebDriver childDriver = Utility.getHandleToWindow("titleOfChildWindow");

articles