2017-09-07 29 views
0

私は各ステップを同期して実行するセレンテストを、.then()、またはasync/awaitを使用せずに作成しようとしています。その理由は、テストチームの誰もがほとんど、技術スキルにかかわらず、読みやすいテストを書くのを可能にする一連の関数を作りたいということです。 webdriver-syncのように、私が望むものを正確に教えてくれるように見えます。ブラウザを起動して、ページの読み込みが開始さ...しかし、手順は同期的に実行されていません - - それが進むと検索しようとwebdriver-syncは非同期で実行していますか?

var wd = require('webdriver-sync'); 
var By = wd.By; 
var Chromedriver = wd.Chromedriver; 
var driver = new Chromedriver; 
driver.get('https://my.test.url'); 
var myButton = driver.findElement(By.cssSelector('[id*=CLICK_ME]')); 
myButton.click(); 

それを実行しようとします。ただし、以下のダミーコードが生成する問題ですページの読み込みが完了する前に「myButton」をクリックし、「このような要素はありません」というエラーを表示します...私はちょっとWebDriver-Syncのポイントを破っていますか?誰かが私がどこに間違っているか教えてくれますか?

FWIW、私はすべてのCentOS 7上に事前に

おかげを実行し、webdriverを同期1.0.0、ノードv7.10.0、Javaの1.8.0_74を持っています!

+0

あなたはfirefoxドライバで同じエラーがありますか? –

+0

これはChromeで実際に動作する必要がありますが、それでも私はFFへの切り替えを試みました。 github.com/jsdevel/webdriver-syncの指示に従ってFFドライバをインスタンス化すると、「ドライバの実行可能ファイルへのパスは、webdriver.gecko.driverシステムプロパティで設定する必要があります」と表示されますが、これをnode.jsで設定するには? – r51

+0

nodejsでSelenium Webdriverを使用した唯一の時間はwebdriver.ioでした。うまくいきました。 –

答えて

1

"CLICK_ME"の前後に二重引用符を付ける必要があります。

一般的に、動的ページはすべての要素が作成される前に「準備完了」状態にあることが多いため、特定の要素を待つことをお勧めします。

関連する問題