2016-06-25 5 views
0

私はselenium-webdriverを使用しています。ページがロードされ、driver.wait(タグが表示されるのを待っている)でロードするのを待っています。Selenium Handle timeout driver.wait

2つのこと

  1. driver.waitにタイムアウトを打つから、エラーを処理する方法には、(サーバーをクラッシュからそれを停止する)はありますか?

  2. 私はこのアプローチが不適切であると考え始めているので、これはdriver.sleepを使用して、driver.findElementを使用してタグが存在するかどうかを確認するのに適していますか?

ありがとう!約束を使用して

答えて

0

、私は私の問題への解決策を見つけた:

driver.wait(webdriver.until.elementLocated(webdriver.By.tagName(selector)), 10 * 1000, "Timed out") 
    .catch(function(e){ 
    if (e.message.match("Timed out")){ 
     return e; 
    } else { 
     throw e; 
    } 
    }) 
    .then(function(e){ 
    if (e.message && e.message.match("Timed out")){ 
     driver.quit(); 
    } else { 
     [functional code] 
     }); 
    } 
    }); 

セレンwebdriverをしたばかりの代わりにタイムアウトに命名エラーのthrow errorを使用していますので、これは、やや扱いにくいです。しかし、それはdriver.sleepを使用するよりも良いようです。