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

时间:2018-05-02 13:57:12

标签: java selenium if-statement webdriver internet-explorer-11

我正在尝试根据用户的选择在浏览器中启动Web应用程序。为此,我使用了IF条件/ Switch Case。在这两种情况下,应用程序都没有在IE11中启动。但是同样的应用程序在Firefox&铬。

如果我不使用For循环或Switch案例,将浏览器名称硬编码为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);
    }

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

  

2018-05-02 19:02:27 INFO Utils:75 - utils收到的浏览器名称是:iexplorer   2018-05-02 19:02:27 INFO Utils:96 - IE之前的浏览器名称:iexplorer   2018-05-02 19:02:27 INFO Utils:99 - 启动IE浏览器   启动InternetExplorerDriver服务器(32位)   2.53.1.0   在港口45158上听   仅允许本地连接   2018年5月2日下午7:02:29 org.openqa.selenium.remote.ProtocolHandshake createSession   信息:检测到的方言:OSS   2018-05-02 19:02:29 INFO Utils:109 - IE之后的浏览器名称:iexplorer   2018-05-02 19:02:29 INFO Utils:112 - 案例chrome之前的浏览器名称:iexplorer   2018-05-02 19:02:29 INFO Utils:115 - 启动Chrome浏览器   在9315端口启动ChromeDriver 2.36.540470(e522d04694c7ebea4ba8821272dbef4f9b818c91)   仅允许本地连接。   2018年5月2日下午7:02:31 org.openqa.selenium.remote.ProtocolHandshake createSession   信息:检测到的方言:OSS   2018-05-02 19:02:31 INFO Utils:124 - 案例镶嵌后的浏览器名称:iexplorer

1 个答案:

答案 0 :(得分:0)

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

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

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