これにアクセスしようとするたびに website を開いて google-chrome-devtools UIにメッセージとオーバーレイが表示されているため、インスペクタで要素を検査できません_Paused in debugger
_。
このディスカッションの支持され承認された回答 は、[マウス]にブレークポイントを設定した場合、[ソース]タブを確認し、[イベントリスナーのブレークポイント]パネルを確認するように指示しています。 Sources
-> EventListenerBreakpoint
が設定されていないことを確認しました。
このディスカッションの支持され承認された回答 は、8角形の小さな停止/一時停止記号(Chrome "Sources"の左下)が色付けされている(青または紫)選択したWebサイトでなぜそれを追加する必要があるのかわかりません。
スナップショット:
この議論の賛成および承認された回答 は、手動ステップについて語っています。
すべての解決策は手動プロセスに向けられているようです。しかし、この問題は Selenium がgetPageSource()
を実行できないことの背後にある根本的な原因のようです。
コードトライアル:
_System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");
options.addArguments("disable-infobars");
options.addArguments("--disable-extensions");
WebDriver driver = new ChromeDriver(options);
driver.get("http://rd.huangpuqu.sh.cn/website/html/shprd/shprd_tpxw/List/list_0.htm");
_
出力:Chromeが開きますが、URLに移動しません。
だから私の質問は:
Paused in debugger
_エラーはどの場合に発生しますか?Paused in debugger
エラーはどの場合に発生しますか?
開発ツールを開いてこのページにアクセスしているときはいつでも。 debugger;
行はJavaScriptの実行を一時停止しますが、開発ツールが閉じている場合、ブラウザはJavaScriptの実行を無視します。
フロントエンド開発からのエラーですか?
この場合、いいえ、彼らは意図的にあなたを締め出そうとしています。この関数の目的は、実行を一時停止し、再開に100ミリ秒以上かかる場合にブラウザを別のページにリダイレクトすることです。これは、Seleniumのような自動クローラーを妨害するように設計されていると思います。通常のユーザーは影響を受けず、人間の開発者がハッキングするだけだからです。
Seleniumを介した自動テスト中にこのエラーを回避するにはどうすればよいですか?
私の最初の推奨事項は、それがオプションである場合、Seleniumをヘッドレスで実行してみることです。そうでない場合はホットキーを使用して実行を再開します(F8)。キープレスを生成するために好きな方法を使用できます。 Java.awtパッケージを使用すると、次のようになります。
Robot robot = null;
try
{
robot = new Robot();
}
catch(Exception e)
{
//handle failure
}
robot.keyPress(KeyEvent.VK_F8);
これを100ms以内にトリガーする必要があるので、ブロックを検出して迅速に応答するには、好きなロジックを使用してください。あなたが何か速くて汚いものが欲しいなら、私はそれがページがロードされたことを確認するまでの期間、50ms毎にF8キープレスをスパムにするだけです。
編集:さらなる調査の結果、このページは開発ツールを開いている誰にとっても非常に厄介で敵対的です。 debugger;
をトリガーする関数は1つではありませんが、ページ上にいる限り、タイマーで繰り返し呼び出されます。セッション全体でF8のスパムを続けたい場合を除いて、ヘッドレスで実行するのが最良の選択のようです。