2017-08-22 19 views
0

SeleniumとChromeDriverを使用して、できるだけ早くページのDOM全体を取得しようとしています。私の重要なAjaxリクエストが終了したら、クラスにdomを挿入し、WebDriverWaitを使用してそのクラスを待ってから続行します。Selenium ChromeDriverを使用してページDOMを取得し、速度を計算する

apiからの応答(ajax呼び出し)が非常に一貫していることをテストすると、広告サーバーやWebサイトやAPI以外のリクエストも削除されました。私はサーバーのログとwiresharkからの要求を検査し、再度非常に一貫しています。

ChromeDriverが完全なdomを取得するのにかかる時間は大きく異なります。以下は私が使用している議論とスイッチです。私は同じページの完全なdomを得るために700ms - 4秒の間に何かを得ています。 ChromeDriverを妨害しているスイッチがありますか?私は単にDOMを望むだけで何を使うべきですか?どのように私は速度のためにoptmiseできますか? Selenium.WebDriver.3.5.0とChrome 60

 chromeOptions.AddArguments("headless", "disable-gpu", "renderer"); 
     chromeOptions.AddArgument("disable-translate"); 
     chromeOptions.AddArgument("no-default-browser-check"); 
     chromeOptions.AddArgument("site-per-process"); 
     chromeOptions.AddArgument("disable-3d-apis"); 
     chromeOptions.AddArgument("disable-background-mode"); 
     chromeOptions.AddArgument("site-per-process"); 
     chromeOptions.AddUserProfilePreference("profile.managed_default_content_settings.images", 2); 
     chromeOptions.AddUserProfilePreference("credentials_enable_service", false); 

おかげ

+0

画像とCSSの読み込みを無効にしましたか? –

+0

画像を無効にしました。どのようにCSSの読み込みを無効にしますか?私はそれのためのスイッチを探していて、コメントしようとしていました! – Dan

+0

ウェブアプリケーションを提供しているサーバーでCSSの読み込みがブロックされているため、Chromeには戻されません。それは少し助けた。私はまだ私のコマンドラインスイッチが正直であるところにあると思う。 – Dan

答えて

0

私のユースケースを使用して

は、クローラに送信する完全なDOMを生成するために、クロムwebdriverをを使用することでした。それはprerender.ioの代わりに使われました。

これを試してみたいと思っている他の開発者もいます。

私のアドバイスはこれをしないことです。それはそれのために設計されておらず、私の経験では応答をより信頼できるものにするために何もできません。

yuが角度を使用している場合は、ユニバーサル(https://universal.angular.io/)を使用してテストしたところうまくいきました。

その他のJSフレームワークでは、https://prerender.ioはまだ選択肢です。

ありがとうございました。

関連する問題