Я пытаюсь исправить ошибку , она входит в цикл while только дважды, а затем выходит из него, может ли кто-нибудь сказать мне, почему ? большое спасибо

#python #selenium #while-loop

Вопрос:

Ниже приведен мой код, я работаю над одной ошибкой приложения здесь, и я хочу, чтобы мой цикл while выполнялся до тех пор, пока ошибка не исчезнет и он не примет значение

   def Handle_ErrorToHigh():
    val = "2500"
    actual_val = int(val)
    const_val = 100
    new_loan.send_keys(val)
    post = wait.until(EC.element_to_be_clickable((By.XPATH, "//span[contains(text(),'Post')]")))
    driver.execute_script("arguments[0].click();", post)
    #post.click()
    i = 0
    while len(driver.find_elements(By.XPATH, "//span[text()='Close']")) > 0:
        try:
            if(len(driver.find_elements(By.XPATH, "//span[text()='Close']"))) > 0:
                print("Alert is visible" , i)
                i  = i   1
                print(i)
                close_btn=wait.until(EC.element_to_be_clickable((By.XPATH, "//span[contains(text(),'Close')]")))
                webdriver.ActionChains(driver).move_to_element(close_btn).click(close_btn).perform()
                new_loan.clear()
                time.sleep(1)
                keys_to_send = actual_val - const_val
                time.sleep(1)
                new_loan.send_keys(str(keys_to_send))
                time.sleep(1)
                wait.until(EC.element_to_be_clickable((By.XPATH,"//span[contains(text(),'Post')]"))).click()
                #driver.execute_script("arguments[0].click();", post_btn)
                const_val = const_val    10
                if const_val >= 1000:
                    break
                else:
                    print('Post must have worked')
                    break
        except:
            print('Something went wrong in code')
            break

Error_length = []
Error_length = len(driver.find_elements(By.XPATH, "//span[text()='Close']"))
if Error_length > 0:
    Handle_ErrorToHigh()
else:
    print("I did not go to IF")

print ("Error lenth:", Error_length)
 

Моя проблема в следующем : в то время как цикл работает только дважды, а затем он выходит из цикла и печатает «Я не заходил в IF», Может ли кто-нибудь что-нибудь предложить здесь ?

Примечание: Закрыть-это кнопка, указывающая на ошибку

Комментарии:

1. если вы нажмете print("I did not go to IF") , то он не войдет в цикл. Python не будет запускать an IF и an ELSE — это не имело бы смысла. Вам захочется поискать в другом месте вашего сценария, чтобы проверить свою логику.

2. Дополнительно break полностью выходит из цикла. У вас есть if const_val >= 1000: break else: print('Post must have worked') break … У ОБОИХ ИЗ НИХ ЕСТЬ BREAK . Когда он достигнет этой точки, он выйдет из цикла while. Вы имели continue в виду, что перезапустит цикл?

3. Здравствуйте, Спасибо за ваш повтор, На самом деле раньше у меня было Истинное состояние, поэтому у меня был перерыв. Вы имеете в виду, что я не должен их иметь ?