2016-08-17 5 views
1

を使用して作成されたWebページをNightmareJSで削り取ろうとしています。私が遭遇している問題は、ページを進めるためにボタンをクリックしようとしている間に、ボタン自体をクリックしようとする前にロードされていることを確認する必要があります。そうしないと、 "セレクタ別に要素を見つけることができません:セレクター "と呼ばれる。NightmareJS待機(セレクタ)がdojoベースのWebページで動作しない

待機時間(ミリ秒)で追加するが、サーバーが遅い、または表示するものが増えている場合は、待ち時間がオーバーランする可能性があります。これは明らかに避けたいものです。だから、私はwait(selector)メソッドを使ってみましたが、何が起こるかは、その時点でただ停止してしまうことです。この間にElectronブラウザが開いていて、セレクタ付きのボタンを含めてページが完全に正常に読み込まれました。クリックしてすべてを手動で実行できます。

は、ここで私が何をしようとしています何の例です:

nightmare 
    .click('#button') 
    .wait('#otherbutton') 
    .click('#otherbutton') 
    .catch((error) => console.log('Error:...', error)); 

最初のボタンがクリックされますと、ページのロードが、それはそこにハングアップし、第2のクリック機能が起こることはありません。

編集:Dojo Webkitについていくつかの調査をしたところ、ウェブページの読み込みに迷惑をかけると思われるspecial loaderが見つかりました。ただし、待機(セレクタ)がページを確認して確認する方法がわからないため要素がページにロードされているかどうかは、dojoローダーが根本的な原因であるかどうかを確認することはできません。

+0

あなたの編集質問に答える: '.wait(セレクタ)'は、デフォルトで250ms毎にポーリングして(メモリサービング)、要素が存在するかどうかを問い合わせます。何もない。 Dojoローダーが問題を引き起こすのではないかと疑います。待機ポーリングはブラウザのコンテキストで実行されますが、ページには依存しません。 – Ross

答えて

0

今日もこの問題に遭遇しました。

私はキュウリjsでナイトメアを実行していましたが、待機機能が応答する前にテストがタイムアウトしました。

ソースコードをチェックして、「待機」機能でタイムアウトパラメータを2番目のパラメータとして使用できることを確認しました。

私はこれが悪夢の最新バージョンのバグだと思うタイムアウト .wait('selector', 2000)

を追加することによって、私の問題を回避しました。

これが役に立ちます。

関連する問題