我是Java新手,有一个重要问题。
所以我有一个带有“开始测试”按钮的Java框架,在btn点击 - > chromedriver已初始化,Chrome正在开始测试。如果浏览器窗口关闭但Frame仍然打开/可见 - 我想再次单击“运行测试”并再次打开浏览器窗口。
但似乎在关闭浏览器窗口时 - 浏览器会话ID不再有效,我有一个例外: Chrome无法访问。(会话信息:chrome = 49.0.2623.23)(驱动程序信息:chromedriver = 2.15.322448,platform = Windows NT 6.1 SP1 x86_64)
系统信息:host:ip:'192.168.69.3',os.name:'Windows 7',os.arch:'amd64',os.version:'6.1',java.version:'1.7.0_55'
会话ID:934535b637b44a82c3482cc2b58471d6
司机信息:org.openqa.selenium.chrome.ChromeDriver
这是我的初始化webDriver类:
public class TestBase {
public static WebDriver driver = null;
public static WebDriver getDriver() {
if (driver == null) {
if (Config.getProperty("browser").equalsIgnoreCase("Chrome")) {
File fileChrome = new File("src//test/java/chromedriver.exe");
System.setProperty("webdriver.chrome.driver", fileChrome.getAbsolutePath());
DesiredCapabilities chrome = DesiredCapabilities.chrome();
try {
driver = new ChromeDriver(chrome);
} catch (Exception e) {
throw new RuntimeException(e);
}
} else {
System.out.println("Can't get any browser");
}
}
return driver;
}
这就是我在测试中调用此方法的方法:
login = PageFactory.initElements(TestBase.getDriver(), Login.class);
login.test1();
我认为我需要在测试开始时生成一个唯一的会话ID,并最终将其终止。或者我可能应该检查Chrome是否打开,如果没有 - 再次启动驱动程序,IDK。 请帮我解决这个问题或建议一些事情。我将非常感谢您的帮助或建议。感谢
答案 0 :(得分:0)
所以,经过一些尝试,我得到了答案。
添加了一个healthCheck方法,该方法检查驱动程序是否还活着。
emulator
然后,在我的chromeDriver开始使用单例的getDriver()方法中,我添加了使用新方法的简单检查:
private static boolean healthCheck(){
try{
driver.getTitle().equals(null);
}catch(Exception ex){
System.out.println("Browser closed");
return false;
}
return true;
}
并且在使用sigleton之后 - 驱动程序开始了。
if (driver != null){
if(healthCheck()){
return driver;
}
driver = null;
}
现在,如果浏览器被用户意外关闭,程序将转到healthCheck()方法,并将再次重新打开它。在这种情况下," Chrome无法访问" -exception消失。