首页 >后端开发 >Python教程 >为什么我的 Selenium WebDriverWait 无法在新打开的窗口中找到元素?

为什么我的 Selenium WebDriverWait 无法在新打开的窗口中找到元素?

Barbara Streisand
Barbara Streisand原创
2024-12-21 19:30:11164浏览

Why is My Selenium WebDriverWait Failing to Find Elements in a Newly Opened Window?

WebDriverWait 未按预期运行

您正在利用 Selenium 从网页中提取数据。该页面包含一个“custom_cols”按钮,可启动用于列选择的窗口。这个新窗口有时需要几秒钟(具体来说,大约 5 秒)来加载。

为了处理这种延迟,您使用了具有 20 秒延迟的 WebDriverWait。奇怪的是,尽管元素显示在屏幕上,但它有时无法在新窗口中找到元素。此问题大约每十次尝试发生一次。

有趣的是,在代码中的其他位置使用 WebDriverWait 可以按预期工作,确保元素在单击它们之前可见。

您的查询围绕新元素中的原因展开尽管使用 WebDriverWait 来检测窗口的可见性,但窗口仍未被识别为可见。

建议解决方案:

问题源于您在尝试单击元素时使用 WebDriverWait 的 Presence_of_element_ located() 方法而不是 element_to_be_clickable() 方法。

解决此问题,替换以下内容line:

myElem = WebDriverWait(self.browser, delay).until(EC.presence_of_element_located((By.XPATH , xpath)))

with:

myElem = WebDriverWait(self.browser, delay).until(EC.element_to_be_clickable((By.XPATH , xpath)))

了解 WebDriverWait 方法:

下面提供了对上述三个方法的进一步说明methods:

  1. presence_of_element_ located: 验证网页 DOM 上元素是否存在,无论其可见性或可交互性如何。
  2. visibility_of_element_ located: 确保元素存在、可见并且尺寸大于0.
  3. element_to_be_clickable:保证元素可见、启用且可交互,使其可用于成功点击。

以上是为什么我的 Selenium WebDriverWait 无法在新打开的窗口中找到元素?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn