簡體   English   中英

嘗試后縮進,除了多個for循環python

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM