Javascript 如果浏览器仍处于打开状态,请与Webdriver联系
我正在使用nodejs和webdriver。它运行一个无限循环,直到我关闭浏览器(这就是想法)。现在的问题是如何检测是否关闭浏览器。以下是我初始化webdriver的方式:Javascript 如果浏览器仍处于打开状态,请与Webdriver联系,javascript,node.js,webdriver,Javascript,Node.js,Webdriver,我正在使用nodejs和webdriver。它运行一个无限循环,直到我关闭浏览器(这就是想法)。现在的问题是如何检测是否关闭浏览器。以下是我初始化webdriver的方式: import webdriver from 'selenium-webdriver'; let browser = new webdriver.Builder().usingServer().withCapabilities({ 'browserName': 'chrome',
import webdriver from 'selenium-webdriver';
let browser = new webdriver.Builder().usingServer().withCapabilities({
'browserName': 'chrome',
'reuse_browser': false
}).build();
请提供有关此主题的任何指导。如果浏览器已关闭,您可以捕获Selenium JavaScript绑定将引发的错误:
Error: This driver instance does not have a valid session ID (did you call WebDriver.quit()?) and may no longer be used.
参见第402行:
function checkHasNotQuit() {
if (!self.session_) {
throw new error.NoSuchSessionError(
'This driver instance does not have a valid session ID ' +
'(did you call WebDriver.quit()?) and may no longer be ' +
'used.');
}
浏览器对象上的“session”变量将仅作为browser.session可用——但是,由于异步性,它可能无法准确显示浏览器是否已关闭
相反,您可以发送与浏览器的虚拟交互,如driver.getTitle(),然后捕获错误以检查浏览器是否已关闭:
try{
driver.getTitle();
// browser is open
} catch(NoSuchSessionError) {
// browser is closed
}
try/catch
方法不起作用,因为webdriver函数是异步运行的。而是使用.then()/.catch()
如果您将此代码嵌入到一个承诺中,您只需
解析
,例如,拥有一个易于调用的浏览器存在
函数。最新的try/catch方法对我有效。
driver.getCurrentUrl().then(function(link){
//Browser is open
resolve(true);
}).catch(function(){
//Browser was closed
resolve(false)
});