Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在通过selenium(python)重新加载网页后验证网页中的更改?_Python_Selenium_Selenium Webdriver_Webdriver_Reload - Fatal编程技术网

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

如何在通过selenium(python)重新加载网页后验证网页中的更改?,python,selenium,selenium-webdriver,webdriver,reload,Python,Selenium,Selenium Webdriver,Webdriver,Reload,我需要不断地尽可能快地重新加载网页,并检查是否有什么变化。但当我尝试以下方法时,它不起作用 我用了这样的方法: while True: driver.get(driver.getCurrentUrl()) source = driver.page_source -- checking for change -- 在使用Edge webdriver时(它是最快的一个),但是当更改已经发生时,webdriver仍然获取页面的旧版本 我不知道驱动程序是否可以将页面保存在缓

我需要不断地尽可能快地重新加载网页,并检查是否有什么变化。但当我尝试以下方法时,它不起作用

我用了这样的方法:

while True:
    driver.get(driver.getCurrentUrl()) 
    source = driver.page_source
    -- checking for change -- 
在使用Edge webdriver时(它是最快的一个),但是当更改已经发生时,webdriver仍然获取页面的旧版本

我不知道驱动程序是否可以将页面保存在缓存中,但我需要确保,我将始终获得当前版本。如何实现这一点?

当您在拉出
页面\u source
检查更改之前再次调用
getCurrentUrl()
上的
get()
方法时,值得一提的是,尽管WebClient可能实现了'document.readyState'等于'complete'在某个阶段,Selenium获得了控制权,该控制权不能保证新页面上所有相关的Javascript和Ajax调用都已完成。除非与DOM树相关联的Javascript和Ajax调用完成,否则页面可能无法完全呈现,您可能无法跟踪预期的更改

检查变更的理想方法是结合以下条款集进行归纳:

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 -- 
while True:
    driver.get(driver.getCurrentUrl())
    WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.ID, "id_of_element_present_in_all_situation")))
    source = driver.page_source
    -- check for change -- 
注意:虽然页面标题位于的
标记内,但更好的解决方案是使元素的可见性提高,该元素将出现在的
标记内的所有情况下,如下所示:

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 -- 
while True:
    driver.get(driver.getCurrentUrl())
    WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.ID, "id_of_element_present_in_all_situation")))
    source = driver.page_source
    -- check for change -- 

您调用
driver.get(driver.getCurrentUrl())
而不是简单地调用
driver.refresh()
,有什么特殊原因吗?。我现在不能检查它,但我怀疑它可以解决这个问题…另外,我想知道通过比较页面源代码,您想要归档什么?是检查整个页面是否有更改,还是检测最终用户甚至看不到的小更改?还要注意,不同的浏览器实现页面源的方式不同:一些浏览器返回DOM的当前状态,而另一些浏览器返回的源与加载时从服务器接收的源完全相同。