我正在运行一个for循环,该循环需要运行100次。 for循环又具有if / else条件。在执行for循环时,if / else条件可以正常工作,并在else条件结束时停止,但不能在for循环中循环。我尝试了几种方法,但是无法使循环正常工作。
for loop in range(100):
if not fb_buttons:
refresh.click()
print("refreshed")
else:
for button in fb_buttons:
button.click()
driver.implicitly_wait(3)
driver.switch_to.window(driver.window_handles[1])
time.sleep(3)
driver.close()
print("popup closed")
driver.switch_to.window(driver.window_handles[0])
continue
我希望循环能够运行100次,但是在运行一次之后它将停止。
答案 0 :(得分:2)
如果fb_buttons恰好是一个迭代器(例如fb_buttons = reversed(buttonList)
),则它到达末尾时,您的第一个测试if not fb_buttons:
将返回False(因为迭代器对象存在),并且{ {1}}块将不处理任何项目(因为迭代器已到达末尾)。因此,该循环实际上将运行100次,但不会执行任何操作。
您可以通过在else:
行之前添加fb_buttons = list(fb_buttons)
来验证这一点。
您还可以对代码进行一些重组,以在if not fb_buttons
循环上使用else:
语句:
for button in fb_buttons:
如果您的for _ in range(100):
for button in fb_buttons:
button.click()
driver.implicitly_wait(3)
driver.switch_to.window(driver.window_handles[1])
time.sleep(3)
driver.close()
print("popup closed")
driver.switch_to.window(driver.window_handles[0])
else:
refresh.click()
print("refreshed")
变量是迭代器,则除非通过refresh.click()重置fb_buttons
,否则逻辑将仅通过fb_buttons循环一次。
BTW,循环末尾的fb_buttons
指令无效。
此外,您可以在第一行中使用continue
代替_
:
loop
。