Selenium,Firefox geckodriver不会在互联网速度较慢时等待页面完全加载
我使用selenium和Firefox驱动程序(geckodriver)从URL列表中获取一些页面源代码 我注意到,如果互联网速度较慢,FireFox不会等到页面完全加载(执行不会等到第5行)。因此,第9行中的页面源实际上来自上一个url 如何让Firefox等待页面完全加载 硒:3.14.1Selenium,Firefox geckodriver不会在互联网速度较慢时等待页面完全加载,selenium,firefox,geckodriver,Selenium,Firefox,Geckodriver,我使用selenium和Firefox驱动程序(geckodriver)从URL列表中获取一些页面源代码 我注意到,如果互联网速度较慢,FireFox不会等到页面完全加载(执行不会等到第5行)。因此,第9行中的页面源实际上来自上一个url 如何让Firefox等待页面完全加载 硒:3.14.1 壁虎河:0.23.0 linux64 1 browser = webdriver.Firefox() 2 3 for url in url_list: 4
壁虎河:0.23.0 linux64
1 browser = webdriver.Firefox()
2
3 for url in url_list:
4
5 browser.get(url)
6
7 sleep(1)
8
9 page_source = browser.page_source
10
11 if html == page_source:
12
13 print "error: page not fully loaded"
14
15 exit(1)
16 html = page_source
更新:我已经测试了Chrome驱动程序。Chrome驱动程序会等待页面完全加载。所以问题可能出在FireFox驱动程序上 您可以使用WebDriverWait等待,直到找到特定元素,或者在网络速度减慢的情况下,还可以添加隐式等待,然后获取页面源 请查找以下java代码:
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.stalenessOf(element));
通常,SeleniumWebDriver中的“.get”是使用HTTP get操作完成的,该方法将一直阻塞,直到加载完成。因此,我不认为互联网连接速度慢会导致问题,但如果你中断了互联网连接,问题就有可能发生
如果页面相同,则可以利用显式等待等待页面上的任何元素,如果元素不可见或未加载,则可以再次单击“.get”方法,或者根据需要执行“.refresh()”方法
显然,如果页面不同,则使用显式wait等待body标记[xpath://body”]加载
有关显式等待的更多详细信息您必须检查浏览器中加载页面的就绪状态是否已完成,直到您可以使用wait For driver,t将抛出错误,因此您应该将其放入try-catch块中
driver.get(url)
WebDriverWait(driver, 30).until(readystate_complete)
有不同的就绪状态,如加载、完成和交互
通常在javascript中,人们会记录文档。readystate
完整意味着文档已被完全读取,所有资源(如图像)也已加载什么是
html
,如如果html==page\u source:
?html存储以前URL的页面源如果连接良好,该方法将阻塞,直到加载完成。如果连接中断。FireFox驱动程序未被阻止。我用铬做了测试。Chrome驱动程序在加载完成之前会被阻塞。所以可能是FireFox驱动程序的问题。