Selenium WebDriver Python 重新加载 html 而不刷新页面
Selenium WebDriver Python reload html without refreshing the page
我有一个包含自我刷新内容(通过 WebSocket)的页面,如下所示 one。虽然内容不断变化,但我的 firefox webdriver 只能看到初始内容。我可以通过
刷新页面来获得新的
driver.navigate.refresh()
但这会导致不必要的流量,除了在 Firefox window 中,新内容已经出现。
我的问题是:我可以在 Firefox window 中看到新鲜的 html 而无需重新加载整个页面吗?
如果页面内容在一段时间内发生变化,您可以做的一个选择是每 n 秒检查一次页面源。一个简单的方法是 import time
然后使用 time.sleep(5)
等待 5 秒,然后获取页面源。你也可以把它放在一个循环中,如果页面内容在随后的5秒内发生变化,那么selenium应该能够在你检查时获得更新的页面内容。我还没有对此进行测试,但请随时检查它是否适合您。
编辑:添加示例代码。确保您已 marionette 正确安装和配置。如果您是 ubuntu 用户 ()
,您可以在这里查看我的回答
# 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:
#
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)
我有一个包含自我刷新内容(通过 WebSocket)的页面,如下所示 one。虽然内容不断变化,但我的 firefox webdriver 只能看到初始内容。我可以通过
刷新页面来获得新的 driver.navigate.refresh()
但这会导致不必要的流量,除了在 Firefox window 中,新内容已经出现。
我的问题是:我可以在 Firefox window 中看到新鲜的 html 而无需重新加载整个页面吗?
如果页面内容在一段时间内发生变化,您可以做的一个选择是每 n 秒检查一次页面源。一个简单的方法是 import time
然后使用 time.sleep(5)
等待 5 秒,然后获取页面源。你也可以把它放在一个循环中,如果页面内容在随后的5秒内发生变化,那么selenium应该能够在你检查时获得更新的页面内容。我还没有对此进行测试,但请随时检查它是否适合您。
编辑:添加示例代码。确保您已 marionette 正确安装和配置。如果您是 ubuntu 用户 (
# 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:
#
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)