我正在使用Python用Selenium编写自动化测试.一种元素可能存在,也可能不存在.我试图用下面的代码来处理它,当元素存在时,它就会工作.但当元素不存在时脚本失败,如果元素不存在,我想继续下一个语句.

try:
       elem = driver.find_element_by_xpath(".//*[@id='SORM_TB_ACTION0']")
       elem.click()
except nosuchelementexception:
       pass

错误-

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element:{"method":"xpath","selector":".//*[@id='SORM_TB_ACTION0']"}

推荐答案

您可以查看该元素是否存在,如果存在,请单击它.不需要例外.注意.find_elements_*中的复数"s".

elem = driver.find_elements_by_xpath(".//*[@id='SORM_TB_ACTION0']")
if len(elem) > 0
    elem[0].click()

Python-3.x相关问答推荐

math. gcd背后的算法是什么,为什么它是更快的欧几里得算法?

Python将类实例变量转换为嵌套 struct

为什么我的Selenium脚本在密码元素上失败?

regexp多重前瞻行为的解释

selenium 无法执行网站上最简单的功能

如何确保 GCP Document AI 模型输出与输入文件同名的 JSON?

多进程:两个进程,一起杀死

在python中将字符串写入文本文件

通过点和线计算CV2 Homography

如何在python中将列表转换为其他格式

从 yahoo Finance python 一次下载多只股票

python 3.7 websockets的1006连接异常关闭错误

django rest框架中的save()、create()和update()有什么区别?

基本 Flask 应用程序未运行(TypeError:模块中缺少必填字段type_ignores)

multiprocessing.Queue 中的 ctx 参数

Python3 mysqlclient-1.3.6(又名 PyMySQL)的用法?

Linux Mint 上的 Python3 错误没有名为蓝牙的模块

python - 使用 matplotlib 和 boto 将绘图从内存上传到 s3

带有数千个逗号刻度标签的 MatPlotLib 美元符号

有没有办法在多个线程中使用 asyncio.Queue ?