【问题标题】:Getting org.openqa.selenium.remote.SessionNotFoundException for IE Driver为 IE 驱动程序获取 org.openqa.selenium.remote.SessionNotFoundException
【发布时间】:2017-10-08 07:56:15
【问题描述】:

我在尝试通过 IE 驱动程序打开 google.com 时收到 org.openqa.selenium.remote.SessionNotFoundException: session null does not exist 异常。

我的代码如下:

public class Google {
    static WebDriver obj;

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String browser = "ie";

        if (browser.equalsIgnoreCase("chrome")) {
            System.setProperty("webdriver.chrome.driver", "E:\\Selenium\\Selenium Prerequisites\\chromedriver.exe");
            obj = new ChromeDriver();

        } else if (browser.equalsIgnoreCase("firefox")) {
            obj = new FirefoxDriver();
        } 
        else if (browser.equalsIgnoreCase("ie")){
            System.setProperty("webdriver.ie.driver", "E:\\Selenium\\Selenium Prerequisites\\IEDriverServer.exe");
            obj = new InternetExplorerDriver();

        }
        else
            System.out.println("invalid browser name");

        obj.get("https:\\google.com");
    }
}

请让我知道我在哪里失踪,我使用的是 IE 浏览器 v11、selenium webdriver v2.53.1、IEDriverServer v3.6.0 32bit。

下面是我得到的完整异常(请注意,如果我切换到 selenium webdriver v3.6,则没有问题并且代码运行正常)

Started InternetExplorerDriver server (64-bit)
3.6.0.0
Listening on port 37910
Only local connections are allowed
Exception in thread "main" org.openqa.selenium.remote.SessionNotFoundException: session null does not exist (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: '2.53.1', revision: 'a36b8b1cd5757287168e54b817830adce9b0158d', time: '2016-06-30 19:26:09'
System info: host: 'SHAN', ip: '192.168.1.6', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_144'
Driver info: org.openqa.selenium.ie.InternetExplorerDriver
Capabilities [{capabilities={acceptInsecureCerts=false, browserVersion=11, se:ieOptions={nativeEvents=true, browserAttachTimeout=0, ie.ensureCleanSession=false, elementScrollBehavior=0, enablePersistentHover=true, ie.browserCommandLineSwitches=, ie.forceCreateProcessApi=false, requireWindowFocus=false, initialBrowserUrl=http://localhost:37910/, ignoreZoomSetting=false, ie.fileUploadDialogTimeout=3000, ignoreProtectedModeSettings=false}, browserName=internet explorer, pageLoadStrategy=normal, unhandledPromptBehavior=dismiss, platformName=windows, setWindowRect=true}, sessionId=280ec1bf-328c-42f6-8f46-e5e7a1dc47f5, platform=ANY}]
Session ID: null
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678)
    at org.openqa.selenium.remote.RemoteWebDriver.get(RemoteWebDriver.java:316)
    at webDriverInitialTest.Google.main(Google.java:54)

以下是 IE 安全标签的截图。

谢谢。

【问题讨论】:

  • 确保您已在 IE 中完成所有设置,例如缩放级别和安全设置。如果没有,请先配置并尝试
  • @NarendraR,您正在谈论哪些安全设置。我是硒新手,所以知识很少。你能告诉我你说的是哪个设置吗?我上面的代码完全适用于 chrome 和 firefox,但只在 IE 中出现问题。
  • 你可以替换下面的代码并告诉我DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer(); capabilities.setCapability(CapabilityType.BROWSER_NAME, "IE"); capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true); System.out.println("Starting InternetExplorer........"); System.setProperty("webdriver.ie.driver","src/test/resources/IEDriverServer.exe"); driver = new InternetExplorerDriver(capabilities); driver.manage().window().maximize(); driver.get(TestDataComman.baseURL);
  • 得到同样的异常。我在 elseif 条件下使用了下面的代码,即驱动程序。DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer(); capabilities.setCapability(CapabilityType.BROWSER_NAME, "IE"); capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true); System.out.println("Starting InternetExplorer........"); System.setProperty("webdriver.ie.driver","E:\\Selenium\\Selenium Prerequisites\\IEDriverServer.exe"); obj = new InternetExplorerDriver(capabilities); obj.manage().window().maximize();

标签: java selenium selenium-webdriver remotewebdriver iedriverserver


【解决方案1】:

手动操作

为所有区域设置相同的安全级别。试试这个步骤

  • 打开 Internet Explorer 浏览器
  • 转到菜单并打开工具 -> Internet 选项 -> 安全
  • 将区域(Int​​ernet、本地 Intranet、受信任站点、受限站点)的所有值设置为相同的保护模式,启用或禁用都无关紧要
  • 点击确定。

或者使用这个

DesiredCapabilities IEcaps = DesiredCapabilities.internetExplorer();

IEcaps .setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);

WebDriver driver = new InternetExplorerDriver(IEcaps );

【讨论】:

  • 我已经尝试了两种方式,但每次都得到相同的异常。
  • 奇怪,让我再检查一遍
  • 我已经在问题中添加了屏幕截图或安全选项卡,请检查。
【解决方案2】:

除了为所有 4 个区域设置启用或禁用保护模式外,您还需要在 Internet Explorer 中将缩放级别设置为 100%。

【讨论】:

    【解决方案3】:

    要使用selenium WebDriver 启动IE11,请使用IEDriverServer_Win32_3.4.0 版本和最新的selenium webDriver。它适用于 IE11 您可以在以下链接中获取 IE 驱动程序 3.4.0 http://selenium-release.storage.googleapis.com/index.html?path=3.4/

    在你的代码中添加下面的 sn-p 以忽略 IE 的保护模式设置,并在你的代码中设置 IEDriverServer 的路径

    DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer(); 
    capabilities.setCapability(InternetExplorerDriver.
    INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);    
    String driverpath="src/Drivers/IEDriverServer.exe"; //IEDirver path
    System.setProperty("webdriver.ie.driver",driverpath);
    InternetExplorerDriver driver= new InternetExplorerDriver(capabilities);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-23
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      • 2020-10-15
      相关资源
      最近更新 更多