#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 не будет запускать anIF
и anELSE
— это не имело бы смысла. Вам захочется поискать в другом месте вашего сценария, чтобы проверить свою логику.2. Дополнительно
break
полностью выходит из цикла. У вас естьif const_val >= 1000: break else: print('Post must have worked') break
… У ОБОИХ ИЗ НИХ ЕСТЬBREAK
. Когда он достигнет этой точки, он выйдет из цикла while. Вы имелиcontinue
в виду, что перезапустит цикл?3. Здравствуйте, Спасибо за ваш повтор, На самом деле раньше у меня было Истинное состояние, поэтому у меня был перерыв. Вы имеете в виду, что я не должен их иметь ?