2017-08-01 20 views
0

キュウリとセレンを使用してサイトをテストします。私のhooks.jsで、私は次のことをしたファイル:Selenium Webdriver BlackスクリーンショットPhantomJS

driver.get("https://localhost:8000/"); 

sleep(2000); 

TakeScreenshot('./test_artifacts/img/', 'Load Success', driver); 

var btn = this.driver.wait(selenium.until.elementLocated(By.css('#app > div > div > div.col-xs-6.textColumn > button'), seleniumTimeOut)); 

TakeScreenshot('./test_artifacts/img/', 'Load Success', driver); 

this.driver.sleep(3000); 

ここでの目的は、成功したページをロードするために、それのスクリーンショットを取ることです。ウェブサイトはlocalhostから実行されています。この問題は、スクリーンショットをとったときに発生します。どのくらい私が運転手を寝かせても、私は黒いスクリーンショットを撮って、ウェブサイトが時間的に「構築」されていないことを示しています。私は、このエラーを取得する:

Waiting for element to be located By(css selector, #app > div > div > div.col-xs-6.textColumn > button) 
Wait timed out after 20112ms 

私はhttps://google.com/にURLを変更した場合、私はサイトのスクリーンショット、問題ありませんを取得します。ここで起こっていることは何ですか?私の上の仮説は正しいのですか? ありがとうございます!

答えて

0

問題は、認証の問題だったようです:それは、その日の私の半分を無駄にした愚かな間違いです。テストはhttpで実行されますが、localhostがhttpsを使用していた場合、テストは失敗します。 私はhook.jsファイルのthis.BeforeFreatureに次を追加して作業しました。

this.driver = new selenium.Builder() 
     .withCapabilities({'phantomjs.cli.args': ['--ignore-ssl-errors=true']}) 
     .forBrowser('phantomjs') 
     .build(); 
0

他の要素が利用可能になるまでお待ちください。 CSSではなくxpath locatorを使用します。あなたのマシンはプロキシの背後にありますか?もしあれば、プロキシの背後にファントムブラウザを追加してください。

var phantom = require('phantom'); 
phantom.create(function(browser){ 
    browser.createPage(function(page){ 

    browser.setProxy('98.239.198.83','21320','http', null, null, function(){ 

    page.open(
     'http://example.com/req.php', function() { 

     });});});}); 
0

まず、ドライバをchromeドライバに変更し、URLを変更した後にスクリプトが何をしているかを確認します。異なる環境では、スクリプトに影響するIDとXPathが異なることがあります。したがって、phantomjsに直接移動する前に、まずchromeやfirefoxのような一般的なドライバを使ってスクリプトの動作を確認してください。

私は同じシナリオを経て、同じ状況を経験しました。 P

が、それはあなたを助けることを願っています:)

関連する問題