Selenium防踩坑 - no such element: Unable to locate element

1,471 阅读1分钟

主要内容

1. 问题描述

在自动化测试中,我们定位元素经常面临的常见错误之一: selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element:... 。除了定位表达式不正确导致定位不到元素外,还有一种是发现不稳定,有时候能找到有时候找不到,甚至有些直接就是找不到。在这篇文章中,我们将进行错误原因的分析和解决方案的讨论。

2. 原因分析

其实不难发现,定位不稳定往往发生在网络不好的时候。页面可能还没加载完成就进行下一步的元素定位,此时元素还没加载出来 selenium 就会报 NoSuchElementException 的错误。

3. 解决方案

我们现在已经了解到错误的原因,接下来可以通过添加等待的方法来等待元素加载出来:

  1. 增加休眠时间 time.sleep() ,简单粗暴,但是不灵活;
  2. 增加隐式等待 implicitly_wait(),一直等待整个页面加载完成,直到超时;
  3. 增加显式等待 WebDriverWait,只等待需要的时间。

详情请看:Selenium系列教程 - 解读selenium等待方式

在这里插入图片描述


在这里插入图片描述