python-3.x - 硒python在NoSuchElementException之后继续
问题描述
我遇到了硒异常的问题:NoSuchElementException。
代码示例:
from selenium.common.exceptions import NoSuchElementException
try:
popup = browser.find_element_by_xpath('//*)
popup.click()
except NoSuchElementException:
pass
有了这个,我在具有上述错误类型的 Django 框架上崩溃了。我需要的是通过这个异常并继续程序。一种选择是使用:
except:
pass
但我需要收集异常元素。
整体元素被浏览器找到但无法点击:
Message: element click intercepted: Element <a class="dropdown-toggle" data-toggle="dropdown" href="#" rel="nofollow">...</a> is not clickable at point (654, 570).
谢谢你的任何建议。
解决方案
你可以在没有 try..catch 的情况下实现这一点。检查元素的长度,如果大于 0,则转到 if 块并执行 else 任何你想做的事情。
if len(browser.find_elements_by_xpath('//*'))>0:
popup =browser.find_element_by_xpath('//*')
popup.click()
else:
print("pass")
或者您可以简单地使用 if 块。
if len(browser.find_elements_by_xpath('//*'))>0:
popup =browser.find_element_by_xpath('//*')
popup.click()
编辑:
诱导WebDriverWait
并等待element_to_be_clickable
()
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
if len(browser.find_elements_by_xpath('//*'))>0:
popup =WebDriverWait(browser,10).until(EC.element_to_be_clickable((By.XPATH,"//*")))
popup.click()
else:
print("pass")
推荐阅读
- google-cloud-platform - 我正在学习 BigQuery 教程,刷新了页面,但无法取回
- php - 在内部数组中搜索项目
- sql - 如果子查询不提供任何输出 {Oracle},如何返回默认值
- rust - 如何在 Rust 和 C++ 之间安全地共享对象?
- javascript - 从 AJAX HTTP responseText 中提取数据
- reactjs - 设置了反应客户端的信号器出现 CORS 错误
- python - 生成随机 AES 密钥,将其转换为字符串并返回字节(Python)
- ios - 我在 Xcode 项目的 git 中有大量“未跟踪的文件”
- powershell - PowerShell:Invoke-RestMethod - 显示百分比进度
- android - 调用返回类型必须参数化为 Call
或调用改造 API 时调用异常