[英]Indentation after try and except in multiple for loops python
我正在使用 try 和 except 縮進。 在 try 和 except 代碼之后我應該如何縮進。
例子:
try:
for elem in
browser.find_elements_by_xpath('/html/body/form[2]/table/tbody/tr[1]/td[1]/select/option'):
elem.click()
except StaleElementReferenceException:
for elem in browser.find_elements_by_xpath('/html/body/form[2]/table/tbody/tr[1]/td[1]/select/option'):
elem.click()
for ele in browser.find_elements_by_xpath('/html/body/form[2]/table/tbody/tr[1]/td[2]/table/tbody/tr[1]/td[1]/select/option'):
ele.click()
我正在使用“嘗試和除外”,因為我不斷收到 StaleElementReferenceException 錯誤。 唯一的問題是我需要在循環中多次使用 try 和 except 。
看來你做對了,在except之后的下一行應該在同一級別縮進。 所以:
try:
bla()
except X as y:
foo()
bar()
注意 bar 之前的額外空行,以保持代碼更具可讀性。
此外,在 try 塊中,您可以將調用 browser.find_elements_by_xpath 移動到變量賦值之前,這樣可以使您的代碼更具可讀性。 例如
all_options = browser.find_elements_by_xpath(
'/html/body/form[2]/table/tbody/tr[1]/td[1]/select/option')
for option in all_options:
option.click()
如果你想再試一次,除了將另一個循環包裝在 except 中,你可以通過多種方式很好地做到這一點。 我的建議是將循環包裝在一個函數中,該函數會將異常“轉換”為返回值:
def click_all_options(path):
try:
for option in browser.find_elements_by_xpath(path):
option.click()
return True
except StaleElementReferenceException:
return False
並在代碼中:
select1 = '/html/body/form[2]/table/tbody/tr[1]/td[1]/select/option'
select2 = '/html/body/form[2]/table/tbody/tr[1]/td[2]/table/tbody/tr[1]/td[1]/select/option'
result = click_all_options(select1):
if not result:
click_all_options(select2):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.