我需要尽快重新加载网页,并检查是否有变化。但是,当我尝试以下操作时,它没有用。
我使用过这样的东西:
while True:
driver.get(driver.getCurrentUrl())
source = driver.page_source
-- checking for change --
使用Edge webdriver(它是最快的),但是当更改已经发生时,webdriver仍然得到旧版本的页面。
我不知道驱动程序是否可以将页面保存在缓存中,但我需要确保,我将始终获得当前版本。我怎样才能做到这一点?
答案 0 :(得分:0)
在您将[{1}}拉出检查更改之前,再次在get()
上调用getCurrentUrl()
方法时,值得一提的是 WebClient 可能已在某个阶段达到' document.readyState' 等于"完成" 并且 Selenium 返回的控件并不能保证新页面上所有关联的 Javascript 和 Ajax Calls 都已完成。除非与 DOM树关联的 Javascript 和 Ajax Calls 完成后,页面才会完全呈现,否则您可能无法跟踪预期的变化。
检查更改的理想方法是将WebDriverWait与expected_conditions子句同时设置为title_contains,如下所示:
page_source
注意:当页面标题位于HTML DOM的while True:
driver.get(driver.getCurrentUrl())
WebDriverWait(browser, 10).until(EC.title_contains(("full_or_partial_text_of_the_page_title")))
source = driver.page_source
-- check for change --
标记内时,更好的解决方案是诱导WebDriverWait对于DOM Tree的<head>
标记内所有情况下都会出现的元素的可见性,如下所示:
<body>