我有这样的情况
for url in ArrayOfUrls:
driver.get(url)
try:
elem1 =driver.find_element_by_xpath("xpath")
elem1.click()
except:
print("elem1 not found")
try:
elem2 =driver.find_element_by_xpath("xpath")
elem2.click()
Error = driver.find_element_by_xpath("xpath")
if Error:
break
except:
print("elem2 not found")
此时我想在if语句中中断执行并希望驱动程序从阵列中启动第二个url for for循环,这是可能的,请帮忙。现在我得到错误“突破循环”,请告诉我什么是实现目的的替代方法
答案 0 :(得分:0)
免责声明:我不知道python所以这将是一个更伪代码的答案
您需要使用标记来跳过代码而不是中断。
所以你的代码看起来像这样:
for url in ArrayOfUrls {
set error_flag = false;
if (test1 && !error_flag) {
// Do stuff
// On error set error_flag = true
}
if (test2 && !error_flag) {
// Do stuff
// On error set error_flag = true
}
if (test3 && !error_flag) {
// Do stuff
// On error set error_flag = true
}
}
基本上,在每个循环的开头设置一个标志为false表示没有错误。从那以后,所有动作都应该测试标志的值。如果它“不是假”(因此是真的)那么代码就知道存在错误,需要跳过所有内容直到下一个循环。
它不漂亮,但小剂量效果很好。从技术上讲,你不需要在第一个动作上检查标志,但我这样做是因为: