关于Selenuim Webdriver查找可能不存在的页面元素的问题

在使用Selenium WebDriver时,查找可能不存在的元素会导致长时间等待并浪费资源。本文探讨了这个问题,提出了解决方案,包括设置隐式等待时间、使用其他工具如BeautifulSoup或Scrapy解析页面,以及监控DOM变化来判断操作状态。通过实例展示如何调整隐式等待时间以减少查找超时,同时警告全局设置可能带来的影响。
摘要由CSDN通过智能技术生成

在Webdriver的很多使用场景下,需要去判断页面上是否出现某个元素,例如提交登录后判断是否有错误信息。此时有两种情况:1.登录失败,有错误信息;2.登录成功,无错误信息。在第一种情况下,通过webdriver的find系列方法肯定能获取到错误信息,但是在第二种情况下,让webdriver去查找一个不存在的页面元素就会出现问题。

def get_chrome_browser():
    service_log_path = CHROME_TEMP_PATH + str(long(time.time() * 1000))
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--user-data-dir=' + service_log_path)
    browser = webdriver.Chrome(CHROME_DRIVER_PATH, chrome_options=chrome_options)
    # 设置隐式等待时间
    browser.implicitly_wait(30)
    # 设置页面加载超时时间
    browser.set_page_load_timeout(30)
    # 设置脚本超时时间
    browser.set_script_timeout(30)
    browser.maximize_window()
    return browser
    

if __name__ == '__main__':
    browser = get_chrome_browser()
    browser.get('https://www.baidu.com/')
    print browser.find_element_by_id('su').get_attribute('value')
    browser.find_element_by_class_name('login-bt2')

使用ChromeDriver作为测试用的浏览器驱动,打开百度搜索的首页,通过webdriver查找到“百度一下”这个按钮,再查找一个不存在的class name。

百度一下
Traceback (most recent call last):
  File "E:/work/crawler/crawler/data/bank_ceb/html_test/test.py", line 197, in &l
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值