Selenium webdriver 无法在 IE 中启动应用程序,但在 Firefox 和 chrome 中打开

Selenium webdriver Not able to launch application in IE, but opens in Firefox and chrome

我正在尝试根据用户的选择在浏览器中启动网络应用程序。为此,我使用了 IF 条件/开关盒。在这两种情况下,应用程序都不会在 IE11 中启动。然而,相同的应用程序在 Firefox & Chrome 中打开正常。

如果我不使用 For 循环或 Switch case,将浏览器名称硬编码为 IE,则应用程序将在 IE11 浏览器中启动并继续测试,没有任何问题。以下代码可能有什么问题

    //Attempt 1. Below code NOT WORKING

    log.info("browser name received in utils is :" + browser);

    switch(browser.toLowerCase()) 
    {
    case "firefox":
        log.info("browser name before case firefox :" + browser);
        try
        {
            log.info("Launching Firefox browser");
            System.setProperty("webdriver.gecko.driver",".\drivers\geckodriver.exe");
            d = new FirefoxDriver();
            d.manage().timeouts().implicitlyWait(50,TimeUnit.SECONDS) ;
        }

        catch (Exception e)
        {
            log.info("Not able to launch browser");

        }
        log.info("browser name after case firefox :" + browser);
    case "iexplorer":
        log.info("browser name before case IE :" + browser);
        try
        {
            log.info("Launching IE browser");
            System.setProperty("webdriver.ie.driver", ".\drivers\IEDriverServer.exe");
            DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
            capabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);
            WebDriver d = new InternetExplorerDriver();
        }catch (Exception e)
        {
            log.info("Not able to launch IE browser");

        }
        log.info("browser name after case IE :" + browser);

    case "chrome":
        log.info("browser name before case chrome :" + browser);
        try
        {
            log.info("Launching Chrome browser");
            System.setProperty("webdriver.chrome.driver", ".\drivers\chromedriver.exe");
            d = new ChromeDriver();
            d.manage().timeouts().implicitlyWait(50,TimeUnit.SECONDS) ;
        }catch (Exception e)
        {
            log.info("Not able to chrome browser");

        }
        log.info("browser name after case chrome :" + browser);
    }

------------尝试 1 的日志输出------------

2018-05-02 19:02:27 INFO Utils:75 - browser name received in utils is :iexplorer 2018-05-02 19:02:27 INFO Utils:96 - browser name before case IE :iexplorer 2018-05-02 19:02:27 INFO Utils:99 - Launching IE browser Started InternetExplorerDriver server (32-bit) 2.53.1.0 Listening on port 45158 Only local connections are allowed May 02, 2018 7:02:29 PM org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Detected dialect: OSS 2018-05-02 19:02:29 INFO Utils:109 - browser name after case IE :iexplorer 2018-05-02 19:02:29 INFO Utils:112 - browser name before case chrome :iexplorer 2018-05-02 19:02:29 INFO Utils:115 - Launching Chrome browser Starting ChromeDriver 2.36.540470 (e522d04694c7ebea4ba8821272dbef4f9b818c91) on port 9315 Only local connections are allowed. May 02, 2018 7:02:31 PM org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Detected dialect: OSS 2018-05-02 19:02:31 INFO Utils:124 - browser name after case chrome :iexplorer

好的,您的日志输入显示浏览器已启动。如果它关闭或者您没有访问权限,则问题可能出在您创建 IEDriver 时的驱动程序变量中:

// Change from
WebDriver d = new InternetExplorerDriver();
// to:
d = new InternetExplorerDriver();

假设您的 var d 是全局变量,它将解决您的问题。由于您正在创建一个具有相同名称的新对象,因此在方法结束时它会丢失其引用。