2016-12-11 13 views
2

私はこのoneのような自己更新コンテンツ(WebSocket経由)のページを持っています。コンテンツは絶えず変化していますが、私のFirefox WebDriverは最初のコンテンツしか見ることができません。Selenium WebDriver Pythonはページを更新せずにHTMLをリロードします

driver.navigate.refresh() 

で新鮮なものを得ることができましたが、これはFirefoxのウィンドウのほかに不要なトラフィックを引き起こします。

私の質問は次のとおりです。ページ全体を再読み込みせずにFirefoxのウィンドウで見られるように、新鮮なHTMLを入手できますか?

+0

ある場合、私はあなたがセレンで、このようなことを行うことができると思ういけないここに私の答えを確認することができます。この代替案を確認してください。 http://jmeter.apache.org – Juggernaut

+0

@AminEtesamianありがとう、いいですが、私はPythonを使用する必要があります。 – user92020

答えて

0

ページの内容が一定期間にわたって変化する場合は、ページソースをn秒ごとにチェックすることもできます。これを行う簡単な方法はimport timeになり、その後time.sleep(5)を使用して5秒待ってから、ページソースを取得します。また、ループに入れることもできます。ページの内容が5秒以内に変更された場合、チェックすると更新されたページの内容を得ることができます。私はこれをテストしていませんが、あなたのために動作するかどうかを自由にチェックしてください。

EDIT:サンプルコードを追加しました。マニオネットが正しくインストールされ、設定されていることを確認してください。あなたがUbuntuのユーザー(https://stackoverflow.com/a/39536091/6284629

# this code would print the source of a page every second 
from selenium import webdriver 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 
import time 

# side note, how to get marionette working for firefox: 
# https://stackoverflow.com/a/39536091/6284629 

capabilities = DesiredCapabilities.FIREFOX 
capabilities["marionette"] = True 
browser = webdriver.Firefox(capabilities=capabilities) 

# load the page 
browser.get("http://url-to-the-site.xyz") 

while True: 
    # print the page source 
    print(browser.page_source) 
    # wait for one second before looping to print the source again 
    time.sleep(1) 
+0

さて、まさに私がやりたいことです。問題は、driver.page_sourceを呼び出すか、特定の要素を調べると内容が変わらないことです。私。ドライバは最初のhtmlを一度保存​​して更新しません。だからポイントは、更新されたソースを取得する方法ですか? – user92020

+0

page_sourceに格納されている変数を再利用している可能性があります。その理由は同じ値を示しているからです。待ってからpage_sourceを同じ変数に再割り当てするか、 'browser.page_source'をもう一度呼び出すと、ページの更新されたソースが取得されます。私は実例を示すために私の答えを編集しました。 –

+0

偉大な、私は "マリネット"オプションを追加しました、今は意図したとおりに動作します!どうもありがとう! – user92020

関連する問題