繁体   English   中英

尝试从内部 Try/except 块中断外部 while 循环

[英]Trying to break outer while loop from inner Try/except block

我想从 try/except 块中中断 while 循环并继续 for 循环。

但是在 try/except 块中的中断无法正常工作。

这是打破 while 的正确方法吗?

    for row in obj:
        url = URL_PATTERN.format(row['CONTEXT_ID'], row['TAGSET_ID'])
        driver.get(url)

        if set_status == "Closed":
            writer.writerow({'CONTEXT_ID': row['CONTEXT_ID'], 'TAGSET_ID': row['TAGSET_ID'], 'STATUS': 'Already Closed'})
        else:

            reopen_count = len(driver.find_elements_by_xpath("//input[@value='Reopen']"))

            r_count = 1
            build_xpath = "(//input[@value='Reopen'])[{}]".format
            while r_count <= reopen_count:
                driver.find_element_by_xpath(build_xpath(r_count)).click()
                driver.find_element_by_xpath("//input[@value='Completed']").click()
                try:
                    alert = driver.switch_to_alert()
                    alert.accept()
                    x_error = "Error"
                    r_count = r_count - 1
                    break
                except:
                    x_error = "NoError"

                r_count = r_count + 1


            if x_error == "Error":
                writer.writerow({'CONTEXT_ID': row['CONTEXT_ID'], 'TAGSET_ID': row['TAGSET_ID'], 'STATUS': 'Error'})
            else:
                writer.writerow({'CONTEXT_ID': row['CONTEXT_ID'], 'TAGSET_ID': row['TAGSET_ID'], 'STATUS': 'Closed'})

我认为你应该将 while 块包装在 try catch 中,就像那样......

try:
    while r_count <= reopen_count:
        driver.find_element_by_xpath(build_xpath(r_count)).click()
        driver.find_element_by_xpath("//input[@value='Completed']").click()
        alert = driver.switch_to_alert()
        alert.accept()
        x_error = "Error"
        r_count = r_count - 1
        break
except:
    x_error = "NoError"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM