Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果浏览器仍处于打开状态,请与Webdriver联系_Javascript_Node.js_Webdriver - Fatal编程技术网

Javascript 如果浏览器仍处于打开状态,请与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',

我正在使用nodejs和webdriver。它运行一个无限循环,直到我关闭浏览器(这就是想法)。现在的问题是如何检测是否关闭浏览器。以下是我初始化webdriver的方式:

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)
  });