Selenium 找不到元素的原因有哪些?

What are some reasons Selenium wouldn't find an Element?

我正在为 Web-based 应用程序编写自动化测试,该应用程序使用 JavaScript 编码并使用 Dojo 框架。我可以使用 well-defined XPATHS 在开发人员工具中找到我希望机器人找到的元素,但自动化测试无法找到 XPATH 导致的文本。

我的测试代码如下所示:

if verified:
     verify_detail.set_pass()
else:
     raise AssertionError("Cannot verify detail. Text did not match expected value.")

我在 UI 上查找的文本在配置文件中没有拼写错误。

还有其他人有这个问题吗? XPATH 在开发人员工具中有效,但在测试为 运行.

时失败

编辑 1:

我想我已经找到了导致此问题的线索。机器人必须导航到称为详细信息面板的面板。详细信息面板在打开时位于另一个称为电影面板的面板之上。想象一下电影标题列表,通过右键单击电影并从下拉列表中选择 'Details' 打开详细信息面板。 所以我基本上得到了一堆面板,我的 XPATH 查询正在点击详细信息窗格下方的窗格,这是我真正需要查看的地方。

有没有其他人遇到过这个问题?

没有太多信息可以继续,但我意识到很难为这种情况提供完整的示例。

这种行为的最常见原因是相关元素不会立即出现在页面上,而是在它出现之前必须进行一些 JavaScript 处理。

最常见的解决方案是使用“隐式等待”,例如:
https://selenium-python.readthedocs.io/waits.html#implicit-waits

请注意,如果持续打开,这可能会影响其他地方的测试性能,特别是在检查是否缺少元素时。

明显的替代方法是显式等待。

另一个分析此类情况的有用工具是在浏览器中对您感兴趣的 DOM 元素设置调试器断点,以查看元素在页面加载时如何变化。