Selenium - IE драйвер: нажмите на ссылку, определенную в js с _blank, ничего не делайте - PullRequest
0 голосов
/ 15 февраля 2019

Я тестирую сайт, где есть ссылки, которые открываются в новой вкладке.Он работает вручную для IE, FireFox и Chrome и с Selenium для FireFox и Chrome, но не для IE, ничего не делает и ошибок нет.
Я проверил код
HTML:

<a id="idA"></a>

JS:

$("#idA").on("click", function () {
    window.open("urlToOpen", "_blank");
}

Java:

(definition of the driver)  
    System.setProperty("webdriver.ie.driver","pathToMyDriverIE");                           
    InternetExplorerOptions internetExplorerOptions = new InternetExplorerOptions();
    internetExplorerOptions.setCapability("RequireWindowFocus", true);
    internetExplorerOptions.setCapability("EnablePersistentHover", true);
    internetExplorerOptions.setCapability("EnableNativeEvents", true);
    internetExplorerOptions.setCapability("ignoreZoomSetting", true);
    internetExplorerOptions.setCapability("ie.ensureCleanSession", true);
    internetExplorerOptions.setCapability("enableElementCacheCleanup", true);
    internetExplorerOptions.destructivelyEnsureCleanSession();
    internetExplorerOptions.setCapability("ignoreProtectedModeSettings", true);
    internetExplorerOptions.setCapability("UnexpectedAlertBehavior", UnexpectedAlertBehaviour.ACCEPT);
    internetExplorerOptions.setCapability("IntroduceInstabilityByIgnoringProtectedModeSettings", true);         
    internetExplorerOptions.setUnhandledPromptBehaviour(UnexpectedAlertBehaviour.ACCEPT);
    driver = new InternetExplorerDriver(internetExplorerOptions); 


(function to click on the link)
public void clickOnLink(boolean withJs){
    WebElement W = driver.findElement(By.id("idA"));
    if(withJs){
         ((JavascriptExecutor)driver).executeScript("arguments[0].click();", W);
    }
    else{
        W.click();
    }
}

Я думаю, что сделать это вручную, при открытии нового окна (потому что мне нужно взаимодействовать с после, и это трудно сделать сIE в новой вкладке), но я не могу получить ссылку, определенную в JS.Без _blank нет проблем.
У кого-то есть идея?
Selenium: 3.11.0;InternetExplorerDriver: 3,9 (32 бита);JDK8
Заранее спасибо.

1 Ответ

0 голосов
/ 18 февраля 2019

ОК, после некоторых поисков и тестов, кажется, что у драйвера IE есть большая проблема, чтобы открыть новые вкладки или окно.Я так использую новый WebDriver:

public static void clicOnLink(){
    //driver = WebDriver in use
    WebElement w = driver.findElement(By.id("idA"));
    w.click();
    if(DriverIsIE && driver.getWindowHandles().size()==1){
        if(w.getTagName().equals("a") && (w.getAttribute("href")!=null && !w.getAttribute("href").isEmpty())){
            openWithNewDriver();
        }
        else{
            String source = driver.getPageSource();
            int s0 = source.indexOf("$(\"#idA\").on(\"click\"");
            String s2 = source.substring(s0,source.indexOf("});"),s0);
            String[] ss = s2.substring(s2.indexOf("window.open")).split(",");
            String urlToOpen = ss[0].replaceAll("\"","").replace("window.open(","").replace(")","");
            openWithNewDriver(urlToOpen);
        }
    }
}

public static void openWithNewDriver(String url){
    WebDriver driver2 = setUpDriver();//definition of the driver
    if(url!=null && !url.isEmpty()){
        driver2.get(url);
    }
    //ExpectedConditions.visibilityOfElementLocated(By.xpath("//body")));
    //to do something on the new window
    driver2.close();
}

Если это будет полезно для кого-то в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...