selenium 的 webdriver 对象有一个 get 方法,可以打开指定的 URL,但是它是阻塞的,除非整个网页都加载完,否则不会返回。这样有两个弊端:一、很多时候,我们不需要整个网页都加载出来。二、如果网页因某种原因卡住,我们的程序也会卡住。解决这个问题的方法,就是用 set_page_load_timeout 函数和 WebDriverWait。

set_page_load_timeout(t):设置 get 方法的最大执行时间为 t 秒。

class WebDriverWait(object):

def __init__(self, driver, timeout, poll_frequency=POLL_FREQUENCY, ignored_exceptions=None)
timeout:等待的最大时间(单位:秒)

poll_frequency:检查的时间间隔(默认 0.5 秒)

ignored_exceptions:执行检查函数时要无视的异常

def until(self, method, message='')

method:检查函数。必须只有一个参数,接受初始化时传入的 driver。只有当该函数返回 True 或者超时,程序才会继续

message:若超时抛出的异常信息

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.common.exceptions import TimeoutException
driver = webdriver.Firefox()
driver.set_page_load_timeout(0.01)
    driver.get('https://www.baidu.com/')
except TimeoutException:
    print('timeout')
WebDriverWait(driver, 10, 0.1).until(lambda x: x.find_element_by_id('kw'))
print('the page is loaded')

我们把网页加载的最大时间设置为 0.01s,这样,get 方法立刻就会抛出 TimeoutException,我们不管它,然后用 WebDriverWait 判断网页有没有加载完毕。

问题解决!

selenium 的 webdriver 对象有一个 get 方法,可以打开指定的 URL,但是它是阻塞的,除非整个网页都加载完,否则不会返回。这样有两个弊端:一、很多时候,我们不需要整个网页都加载出来。二、如果网页因某种原因卡住,我们的程序也会卡住。解决这个问题的方法,就是用 set_page_load_timeout 函数和 WebDriverWait。set_page_load_time...
在执行自动化测试用例过程中,发现因为网络慢或其他原因导致driver.get(url) 时,页面一直在 加载 ,页面没有 加载 完成就不会去继续执行下面的动作,但是实际上需要操作的元素已经 加载 出来了。 解决 方法 第一步:使用 set_script_timeout() 设置等待最大时间。 第二步:到了最大等待时间后页面如果仍然没有 加载 完成,执行js代码, driver.execute_script("...
driver.get(”url”)等到页面全部 加载 渲染完成后才会执行后续的脚本。 在执行脚本时,driver.get(“url”) ,如果当前的url页面内容较多 加载 特别慢,很费时间,但是我们需要操作的元素已经 加载 出来,可以将页面 加载 停掉,不影响后面的脚本执行, 解决 办法 设置页面 加载 timeout,get操作: try get except 脚本window.stop(), 使用GeckoDriver上有效果, 但是在ChromeDriver上还是会有 问题 ,抛出异常timeout后续脚本不会继续执行 GeckoDriver执行具体如下: 访问百度贴吧某个获取其帖子总页数: 可以通过两种方式获取
在进行爬虫等数据采集任务,将爬取的页面保存成mhtml也面的时候,往往会遇到一些页面,存在懒 加载 问题 ,这样就算将 网页 保存下来,里面的图片等都会丢失。这里介绍使用自动化测试工具 解决 加载 问题 。 首先,懒 加载 是什么?其实网上有很多的专业介绍,这里我就用一句话概括,为了减轻服务器的压力,用户访问页面的时候,不会全部将页面 加载 ,而是当用户浏览到哪, 加载 到哪。这样的结果就是当你保存页面的时候,有些数据是拿不到的,因为你没浏览到某个地方,这个地方的数据是无法 加载 的。 解决 思路:...
Selenium webdriver未正确关闭资源导致爬虫 卡住 由于我在写 selenium 爬虫代码时,关闭页面使用的driver.close() 查过资料 得知driver.close()指的是仅关闭页面 ,因此这里应该使用driver.quit() 这个方法不但会关闭所有页面,还会释放webdriver资源
批量登录设备执行操作时(150台设备),每次一到第22台设备时,页面 加载 不出来,直接报错。 经过各种网上看教程,还是没 解决 。 尝试每次循环一次,结束Chromedriver. exe和Chrome.exe,还是会卡主。 手动把卡主的画面最大化后发现,页面正常,突然有思路了。 在程序中,卡顿页面之前加一个最大化窗口指令: 2 from selenium import webdriver 4 p = __import__(' selenium .webdriver.firefox.webdriver',fromlist=('WebDriver'))    ##### 5 url = ...