selenium+python debug模式和run模式执行结果不一致问题解决

错误

出错函数如下:

#判断当前页面是否出现弹窗
def alert_is_present(driver):
    try:
        alert_box = driver.switch_to.alert
        return alert_box
    except:
        return False

该函数在debug模式下可以正确执行并返回相应结果,但是在run模式下则只会返回False

原因分析

由于浏览器的渲染需要耗费一定的时间,而在程序执行时几乎是瞬间完成,那么alert_box = driver.switch_to.alert便会直接抛出错误,然后执行except语句,从而也就导致了后续的错误。而在debug模式下,由于单步调试存在一定的时间间隔,因此不会出现错误。

改进

from time import sleep

def alert_is_present(driver):
    try:
        sleep(5)
        alert_box = driver.switch_to.alert
        return alert_box
    except:
        return False

用sleep()函数加入一个时间间隔即可

上一篇:包教包会,7段代码带你玩转Python条件语句


下一篇:剑指Offer 57