Python/Selenium 尝试在未找到的元素上使用 "if"语句

标签 python python-3.x selenium automation

当找不到 xpath 时,我尝试使用特定消息引发 ValueError。

@step('Click save')
def step_impl(context):

click_save = 
context.browser.find_element_by_xpath("//button[@class='save_button']")
if not click_save:
   raise ValueError('Save button is not found')
click_save.click()

理想情况下,如果未找到保存按钮,我希望显示 raise ValueError...但是当未找到 click_save xpath 时,代码将永远不会到达“if”语句。我只会收到一个错误...等等等等 xpath 未找到或无论它是什么。

当在一组测试中您可能有类似的 xpath 并且我想确切地知道哪一个失败时,我试图更具体地执行此操作。

这可能吗?

最佳答案

Selenium 无法找到该元素并引发错误。您可以检查元素的长度计数,如果它为零,则会引发错误。

尝试下面的代码。

if len(browser.find_elements_by_xpath("//button[@class='save_button']"))==0:
   raise ValueError('Save button is not found')
else:
  click_save = browser.find_element_by_xpath("//button[@class='save_button']")
  click_save.click()

关于Python/Selenium 尝试在未找到的元素上使用 "if"语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57205772/

相关文章:

Python Mysql 类错误

python - 如何使用Python将unicode字符串转换为真正的字符串

python - NumPy 直方图 - ValueError 范围参数必须是有限的 - 输入数组没问题

python-3.x - 根据现有列中的唯一文本值创建新的 Z-Score 列

javascript - IE9 上的 Selenium JavascriptExecutor 导致 'element was not scrolled into the viewport' 错误

java - 我想自动处理无效和有效的凭据

python - 如何通过Python控制Enttec Open DMX USB?

python - 属性错误 : 'MSVCCompiler' object has no attribute 'linker_exe'

python - 意外的打印行为 Python 3

python - 尝试一次通过搜索发送一个列表项