我使用selenium webdriver和java自动化应用程序。在那我必须打开一个浏览器实例&执行一些动作。之后我必须打开另一个浏览器实例,在其中执行一些操作&关闭那个实例。然后我必须再次将控件返回到第一个浏览器实例以执行其他一些操作。
我尝试使用:
String winHandleBefore = driver.getWindowHandle();
//then open new instance and perfom the actions
driver.switchTo().window(winHandleBefore);
但是这返回了一个错误:
org.openqa.selenium.remote.SessionNotFoundException: no such session
我该怎么做?有人可以帮忙吗?
答案 0 :(得分:1)
当您执行<svg>
<polyline points="10 1, 30 1,10 10,30 10" fill="none" stroke-width="2px" stroke="#19af5c"></polyline>
</svg>
时,重新初始化了driver = new ChromeDriver();
对象,导致第一个窗口丢失。您可以通过在打开新窗口后检查窗口句柄的数量来查看它
driver
要解决此问题,请使用临时WebDriver driver = new ChromeDriver();
int len = getWindowHandles().size(); // 1 as expected
driver = new ChromeDriver();
len = getWindowHandles().size(); // still 1, has only the new window
打开新窗口
driver