2016-12-11 381 views
2

我有一個自我刷新內容的頁面(通過WebSocket),像這樣one。雖然內容在不斷變化,但我的firefox webdriver只能看到最初的內容。我可以通過刷新頁面得到新鮮的頁面Selenium WebDriver Python重新加載html而無需刷新頁面

driver.navigate.refresh() 

但是這會導致不必要的流量,除了在Firefox窗口中新的內容已經出現。

我的問題是:我可以得到新的HTML,因爲我可以在Firefox窗口中觀察,而無需重新加載整個頁面?

+0

我不認爲你可以做這樣的事情硒。檢查這個選擇。 http://jmeter.apache.org – Juggernaut

+0

@AminEtesamian謝謝,看起來不錯,但我需要使用python。 – user92020

回答

0

如果頁面內容在一段時間內發生變化,您可以做的一個選項是每n秒檢查頁面源。一個簡單的方法是import time,然後使用time.sleep(5)等待5秒鐘,然後獲取頁面源代碼。你也可以把它放在一個循環中,如果頁面內容在接下來的5秒內發生了變化,那麼硒在檢查時應該能夠獲得更新的頁面內容。我沒有測試過,但可以隨時檢查它是否適用於您。

編輯:增加了示例代碼。確保您有木偶正確安裝和配置。你可以在這裏查看我的回答如果你是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

相關問題