我正在python3中使用Selenium Webdriver。当驱动程序到达某个页面并且如果存在带有类shiftUp
的某个类元素时,我想在该点打印响应并停止执行。目前,我正在执行以下操作:
flag = 0
try:
error_source_file = driver.find_element_by_class_name("shiftUp")
flag = 1
except:
pass
if flag:
print("RESPONSE")
sys.exit()
我想要一种正确的方法。
答案 0 :(得分:1)
使用else
子句:
try:
error_source_file = driver.find_element_by_class_name("shiftUp")
except NoSuchElementException:
pass
else:
print("RESPONSE")
sys.exit()
在未引发错误的情况下触发:https://docs.python.org/3/tutorial/errors.html#handling-exceptions:
try … except
语句具有可选的 else子句,当存在该子句时,该子句必须遵循除条款之外的所有子句。对于try子句未引发异常的必须执行的代码,这很有用。
和
使用
else
子句比向try
子句添加其他代码更好,因为它避免了意外捕获{{1}保护的代码未引发的异常}。
出于类似的原因,我建议只捕获try … except
:您不想捕获不想要的错误。
答案 1 :(得分:-1)
为什么不呢?
Dim RectTemplate As New Rectangle(0, 0, 250, 250)
Dim GapPx As Int32 = 12 ' set gap between rectangles
Dim StaPt As New Point(GapPx, GapPx * 2) ' set starting point
Dim N As Int32 = Val(TextBox1.Text) ' set (or get) the totalnumber of rectangles
Dim nL As Int32 = Math.Floor((e.PageBounds.Width - GapPx) / (RectTemplate.Width + GapPx)) ' number of rectangles per row
Dim nR As Int32 = Math.Ceiling(N / nL) ' number of rows of rectangles
For ir = 0 To nR - 1 ' process all rows
For il = 0 To nL - 1 ' process all rectangles in a row
If (nR * RectTemplate.Height) > e.PageBounds.Height Then
e.HasMorePages = False
Else
Dim rect As New Rectangle(StaPt.X + il * (RectTemplate.Width + GapPx), StaPt.Y + ir * (RectTemplate.Height + GapPx), RectTemplate.Width, RectTemplate.Height)
e.Graphics.DrawRectangle(Pens.Sienna, rect)
End If
Next
Next
如果try:
error_source_file = driver.find_element_by_class_name("shiftUp")
print("RESPONSE")
sys.exit()
except NoSuchElementException:
pass
方法引发异常,则不会执行error_source_file
之后的行。
注意:请考虑确定要捕获的异常的类型(例如:
find_element
),否则您可以忽略错误,这确实很糟糕。