如何在IE驱动程序中获取会话

时间:2014-10-28 08:58:40

标签: java internet-explorer selenium selenium-webdriver jsessionid

我需要跟踪会话ID以了解应用程序的某些特殊要求,并且必须在应用程序UI的Access Log页面中对其进行匹配。我尝试使用以下代码,它在firefox驱动程序中正常工作。

String ASPNET_SessionId = driver.manage().getCookieNamed("JSESSIONID").toString();

strSessionID = ASPNET_SessionId.split("=")[1].split(";")[0];

我们在框架中有一个功能,我们可以在Firefox或IE的任何浏览器中执行。但是当尝试在IE中执行我的测试时,它在获取会话ID时获取空指针异常。基本上会话将变为空。

我尝试按如下方式调用IE:

strIEDriverPath = currentDir+(FileHandlerClass.readPropertiesXml(strPropertiesFilePath, "IEDriverPath"));

System.setProperty("webdriver.ie.driver", strIEDriverPath);

DesiredCapabilities capab = DesiredCapabilities.internetExplorer();

capab.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);

driver = new InternetExplorerDriver(capab);

但仍然没有帮助......

任何人都可以建议我如何从IE驱动程序获取会话ID?任何帮助或建议都应该受到高度赞赏..

2 个答案:

答案 0 :(得分:0)

我也测试了你喜欢的代码;

File file = new File("C:\\IEDriverServer\\IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
driver = new InternetExplorerDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
//Do something test.
System.out.println(driver.manage().getCookieNamed("JSESSIONID").toString());

我的输出是

JSESSIONID=JPlxPwhMkyYdpmQvJt73mSjd5p9fnn1VHfq1yvbdvZ9gnG1380rf!-1092181086; path=/

我的操作系统是Windows7 64位,IEDriverServer.exe也是64位版本。所以我猜你的driver.manage().getCookieNamed("JSESSIONID").toString()没问题。检查你的文件路径并检查你的 IEDriverServer.exe 版本。

答案 1 :(得分:-1)

SessionId sessionId = null;
sessionId = ((InternetExplorerDriver) wDriver).getSessionId();