+ 我要发布
我发布的 我的标签 发现
浏览器扩展
斑点象@Edge

selenium 如何等待页面加载完毕后在继续后面的操作

默认情况下 selenium 会等待整个界面加载完成(指对html和子资源的下载与解析,如JS文件,图片等,不包括ajax)。 但有时候页面数据渲染是由ajax完成的,如果采用默认情况,则无法得到我们想要的结果,这时需要等待页面所有数据包括ajax加载完成后再进行后续操作。 下面介绍几种等待页面完全加载完成的方法。 # time.sleep() time.sleep() 使用 time.sleep() 方法可以让程序暂停指定的时间,等待页面加载完成。但这种方法不够灵活,因为不同的页面加载时间可能不同,设置时间过短会导致程序出错,设置时间过长会浪费时间。 ``` import time from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.xxx.com') time.sleep(5) #等待 5 秒钟,建议不要设置过长 ``` # 隐式等待 使用隐式等待可以设置一个固定的时间,让程序等待页面加载完成。如果页面在规定的时间内加载完成,则立即执行下一步操作;如果页面没有在规定的时间内加载完成,则抛出异常。这种方法比 time.sleep() 更加灵活,因为它可以自动调整等待时间。 ``` from selenium import webdriver driver = webdriver.Chrome() driver.implicitly_wait(10) #等待 10 秒钟 driver.get('https://www.xxx.com') ``` # 显式等待 使用显式等待可以设置一个条件,让程序等待满足条件后再执行下一步操作。这种方法比隐式等待更加灵活,因为它可以根据需要设置不同的等待条件。 ``` from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() driver.get('https://www.xxx.com') element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'example'))) #等待元素出现 ``` 上面示例代码使用了 WebDriverWait 方法来设置等待条件,它会等待元素出现,最长等待时间为 10 秒钟。如果元素在规定的时间内出现了,则程序会继续执行下一步操作;否则会抛出异常。
我的笔记
你可能想看的