2016-04-24 34 views
3

私はnodejsとwebdriverを使用しています。私はブラウザを閉じるまで、その無限ループを実行しています(そのアイデアです)。今質問は、私がブラウザを閉じるかどうかを検出する方法です。これは私がwebdriverを初期化した方法です:ブラウザが開いている場合はWebdriverで確認してください

import webdriver from 'selenium-webdriver'; 
let browser = new webdriver.Builder().usingServer().withCapabilities({ 
      'browserName': 'chrome', 
      'reuse_browser': false 
     }).build(); 

この件に関するガイダンスはあります。

答えて

1

try/catch方法は動作しませんので、 webdriver関数は非同期で実行されます。代わりに.then()/.catch()を使用してください。あなたは約束で、このコードを埋め込む場合

driver.getCurrentUrl().then(function(link){ 
    //Browser is open 
    resolve(true); 
    }).catch(function(){ 
    //Browser was closed 
    resolve(false) 
    }); 

あなただけresolveに必要な、簡単に呼び出しbrowserExists機能を持っている、と言います。

4

あなたは、ブラウザが閉じられた場合にはセレンのJavaScriptバインディングによってスローされますエラーをキャッチすることができます:

Error: This driver instance does not have a valid session ID (did you call WebDriver.quit()?) and may no longer be used. 

は、ライン402の周りselenium-webdriver/lib/webdriver/webdriver.jsを参照してください。

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 
} 
+0

誰でもこれが機能していることを確認できますか? – emery

+1

try/catchの最新のアプローチが私のために働いた。 –

関連する問題