python - 尝试后缩进,除了多个for循环python
问题描述
我正在使用 try 和除了缩进。在我尝试和除外代码之后我应该如何缩进。
例子:
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()
我正在使用“try and except”,因为我不断收到 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):
推荐阅读
- asp.net-core - fbx 文件无法在 ASP.NET 核心中加载
- power-automate - Power Automate 自定义连接器响应未返回 JSON
- python - 如何打印对象?- FreeCodeCamp 项目
- laravel - Vue.JS Bootstrap-vue 表 - API Laravel - 关系
- android - 如何在Option android中设置重复的最大计数到getOrElse函数
- c++ - 如何获取 32 位进程的 IMAGE_SECTION_HEADER
- html - 包装css网格并拉伸一个网格项以占用所有空列
- javascript - PIXI JS - 画布崩溃并显示崩溃图标
- file - TCL——读取文件列
- mongodb - 查找日期 A 和日期 B 之间的字段的最大增量