如何通过selenium(python)重新加载网页后验证网页中的更改?

时间:2018-04-15 20:14:41

标签: python selenium selenium-webdriver webdriver reload

我需要尽快重新加载网页,并检查是否有变化。但是,当我尝试以下操作时,它没有用。

我使用过这样的东西:

while True:
    driver.get(driver.getCurrentUrl()) 
    source = driver.page_source
    -- checking for change -- 

使用Edge webdriver(它是最快的),但是当更改已经发生时,webdriver仍然得到旧版本的页面。

我不知道驱动程序是否可以将页面保存在缓存中,但我需要确保,我将始终获得当前版本。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

在您将[{1}}拉出检查更改之前,再次在get()上调用getCurrentUrl()方法时,值得一提的是 WebClient 可能已在某个阶段达到' document.readyState' 等于"完成" 并且 Selenium 返回的控件并不能保证新页面上所有关联的 Javascript Ajax Calls 都已完成。除非与 DOM树关联的 Javascript Ajax Calls 完成后,页面才会完全呈现,否则您可能无法跟踪预期的变化。

检查更改的理想方法是将WebDriverWaitexpected_conditions子句同时设置为title_contains,如下所示:

page_source

注意:当页面标题位于HTML DOMwhile 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>