如何终止if并重新开始for循环

时间:2018-03-30 12:07:33

标签: python-3.x selenium selenium-webdriver

我有这样的情况

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循环,这是可能的,请帮忙。现在我得到错误“突破循环”,请告诉我什么是实现目的的替代方法

1 个答案:

答案 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表示没有错误。从那以后,所有动作都应该测试标志的值。如果它“不是假”(因此是真的)那么代码就知道存在错误,需要跳过所有内容直到下一个循环。

它不漂亮,但小剂量效果很好。从技术上讲,你不需要在第一个动作上检查标志,但我这样做是因为:

  1. 代码在视觉上清洁/对齐
  2. 如果你需要移动它,它已经包含在if()语句中