Python/Selenium: 如何将断言/错误仅视为程序中进一步使用的真或假?

0 投票
2 回答
676 浏览
提问于 2025-04-17 04:36

我正在用Python进行Selenium RC的操作,使用了以下的selenium命令:

self.se.get_attribute("CSS")

这个命令会在网页上找不到指定的CSS时触发一个错误。

我想知道有没有办法让这个错误不发生,而是执行另一个命令(前提是这个错误确实发生了)。

self.se.get_text("another CSS")

在Python中,有没有办法捕捉这个错误,并且只记录它的值,然后继续执行程序,而不是让程序直接停止?

有人能帮我吗?谢谢!

2 个回答

0

把检查选择器是否存在的方法的结果赋值给一个布尔值。Ruby 代码大概是这样的:

selector_present? = @driver.find_elements(:css, "div#id_name").length > 0
#some other code in your test script
overall_result = selector_present? && other_selector_present?
overall_result.should be_true

Python 的写法也差不多。

0

如果在使用 'CSS' 时出现无效的情况,selenium 会抛出一个 TypeError 错误。你可以在 try..except 代码块中捕获并处理这个错误:

try:
    self.se.get_attribute("CSS")
except TypeError:
    self.se.get_text("another CSS")

这就是一种叫做 “先求宽恕(EAFP)” 的编程风格。另一种风格是 “先看再跳(LBYL)”(比如可以参考 Nikita Barsukov 的回答)。这两种方式都是可以的,但我觉得在 Python 中更推荐 EAFP,因为它不会让代码充满条件判断,这些判断可能无法完全捕捉到异常情况。而且当异常不常发生时,EAFP 也 执行得更快。如果异常发生得很频繁,LBYL 可能会更好一些。

撰写回答