0

嗨,我正在调用登录函数,但它引发了会话未找到异常我已将登录保存为库

导入库。登录;公共类MessageBoard{WebDriver驱动程序;@Before方法公共void initalise(){System.setProperty(“webdriver.ie.driver”,“C:\\Eclipse\\IEDriverServer.exe”);DesiredCapabilities caps=新Desiredcapabilitiies();caps.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);driver=新的InternetExplorerDriver(caps);}@测试public void LogintoSystem(){driver.manage().window().maximize();司机。get(“http://segotn11540.rds.volvo.com/vss_connect_testr1/Login/Login.aspx");登录名=新登录名(“TYP40FI”,“Volvo”);}

我收到以下错误失败:登录系统org.openqa.selenium.remote。SessionNotFoundException:启动Internet Explorer时发生意外错误。所有区域的保护模式设置都不同。所有区域的“启用保护模式”必须设置为相同的值(启用或禁用)。(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:555毫秒

1

2个答案2

重置为默认值
1

我也遇到过类似的问题,打开IE并确保所有区域在internet选项-->安全性中都相同,将浏览器中的“保护模式”设置更改为相同(启用或禁用),但如果仅用于测试,我建议禁用。这里有一个很好的资源:Jim Evans关于保护模式黑客攻击的说明http://jimevansmusic.blogspot.ca/2012/08/youre-doing-it-wrong-protected-mode-and.html以下为:“驱动程序需要一个变通方法来解决那些由于机器被过度锁定而无法设置IE设置的人。这就是功能设置的用途。它只是绕过注册表检查。不过,使用该功能并不能解决根本问题。如果越过保护模式边界,可能会导致非常意外的行为,包括挂起、元素位置不工作以及未传播单击。为了提醒人们这个潜在的问题,该功能被冠以可怕的大名,比如Java中的INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,并在中引入InstabilityByIgnoringProtectedModeSettings。净利润。"

2
  • 我认为问题出在其他方面。它正在启动浏览器,但当调用登录库时,它会抛出一个异常。我附加了登录库的公共类login{WebDriver driver;public login(String UserName,String BrandName){driver=new InternetExplorerDriver();driver.findElement(按.xpath(“//input[@name='UserNameInputText']”)).sendKeys(用户名);driver.findElement(By.xpath(“//input[@name='Brand']”).sendKeys(BrandName);driver.findElement(By.xpath(“//input[@name='CmdLogin']”).click();字符串标题=driver.getTitle(); 2016年7月18日12:39
  • 阅读我通过编辑答案添加的文章,我以前使用INTRODUCE_FLAKINESS_by_IGNORING_SECURITY_DOMAINS,但在阅读后,我使用的唯一功能是ie.ensureCleanSession 2016年7月18日12:42
0

https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver网站

•在Windows Vista或Windows 7上的IE 7或更高版本上,必须将每个区域的“保护模式”设置设置为相同的值。该值可以打开或关闭,只要每个区域的值相同即可。要设置保护模式设置,请从“工具”菜单中选择“Internet选项…”,然后单击“安全”选项卡。对于每个区域,标签为“启用保护模式”的选项卡底部都会有一个复选框。

-----------------------------已编辑---------------------------------------

我看到了实际的问题,你基本上有两个不同的网络驱动程序。1在主测试上,另1在Login类上。我建议您将Web驱动程序从main传递到Login类

公共类登录{WebDriver驱动程序;公共登录(String用户名、String BrandName、WebDriver驱动程序){driver=驾驶员;//将main中的驱动程序分配给该Login类driver.findElement(By.xpath(“//input[@name='UserNameInputText']”).sendKeys(Us-erName);driver.findElement(By.xpath(“//input[@name='Brand']”).sendKeys(BrandName);driver.findElement(By.xpath(“//input[@name='CmdLogin']”).click();字符串标题=driver.getTitle();//等等。。。}}

然后在你的主机上

@测试public void LogintoSystem(){driver.manage().window().maximize();司机。get(“http://segotn11540.rds.volvo.com/vss_connect_testr1/Login/Login.aspx");登录名=新登录名(“TYP40FI”,“沃尔沃”,驾驶员);//超过驾驶员}

因此,您具有相同会话的相同驱动程序。

-----------编辑2---------------------

删除Login类中的WebDriver并使用driver参数来完成此工作。

公共类登录{公共登录(String用户名、String BrandName、WebDriver驱动程序){Driver.findElement(By.xpath(“//input[@name='UserNameInputText']”).sendKeys(Us-erName);Driver.findElement(By.xpath(“//input[@name='Brand']”).sendKeys(BrandName);Driver.findElement(By.xpath(“//input[@name='CmdLogin']”).click();字符串标题=Driver.getTitle();//等等。。。}}

主管道保持不变。

7
  • 但我使用了以下语句caps.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true); 2016年7月18日12:18
  • 这与您的IE保护模式错误没有任何关系。您仍然需要在所有区域上设置或禁用保护模式。 2016年7月18日12:25
  • 无视我之前的评论。我想我理解你的实际问题。我在先前的答案中加了一个。 2016年7月19日1:07
  • 你好,Kurakura,你的代码很好,但我仍然需要声明WebDriver,这两个类中的驱动程序我如何在同一个会话中创建同一个驱动程序 2016年7月20日11:05
  • 如果你需要两名司机参加同一次训练,那么我之前的回答符合你的需要。如果您只需要一个驱动程序,那么我建议您将Web驱动程序声明为静态的,因此每个人都可以使用它。不过,我觉得你编辑的代码没问题。 2016年7月21日0:56

您的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策

不是你想要的答案吗?浏览标记的其他问题问你自己的问题