Как сделать цикл, который останавливается только когда появляется кнопка «возврат» - PullRequest
0 голосов
/ 09 апреля 2019

Я создал скрипт на python для входа на сайт Siafi. У этого скрипта есть цикл, который просматривает встречи, чтобы заплатить за день, чтобы заплатить их, я должен нажать «проверить все», их десять на страницу. Мы нажимаем на кнопку «Выполнить», открываем всплывающее окно с вопросом, хотите ли вы выполнить или запланировать, набираете «r» для выполнения и нажимаете «Подтвердить», затем открывается всплывающее окно для ввода кода 400 и «Подтвердите», небольшое всплывающее окно «Подождите». и снова мы должны ввести 400 и подтвердить десять раз. После десятого раза появляется кнопка возврата, а затем цикл возобновляется. Я создал «для меня в диапазоне (10):», чтобы он сделал десять цифр кода 400 и подтвердил. Проблема в том, что, когда сайт работает медленно, он выдает ошибку, и если я подожду несколько секунд между одним набором текста и другим, это приведет к потере времени. Мы должны сделать более семи тысяч из них, десять из десяти. Мой сценарий имеет цикл для поиска встреч и выполняет поиск в диапазоне (10) для платежей. Я хотел бы создать дополнительный цикл для замены «for i in range (10)» и чтобы он останавливался только тогда, когда появляется кнопка «return», потому что, когда эта кнопка появляется, десять уже набраны.

Вот фрагмент этого кода:

 for i in range(10):
try:
    vinc = wait.until(EC.presence_of_element_located((By.ID, 'formComp:repeatCompromissoLista:0:tableRealizacao:0:subtableVinculacoes:0:vinculacao_input')))
    vinc = browser.find_element_by_id('formComp:repeatCompromissoLista:0:tableRealizacao:0:subtableVinculacoes:0:vinculacao_input')
    vinc.send_keys('400')
    enterElem5 = wait.until(EC.element_to_be_clickable((By.ID, 'formComp:buttonConfirmar')))
    enterElem5 = browser.find_element_by_id('formComp:buttonConfirmar')
    enterElem5.send_keys(Keys.ENTER)#digitar a vinculação e dar enter, fazer isso dez vezes, ver função range
    time.sleep(int(segundosv))
except:
    time.sleep(6)
    vinc = wait.until(EC.presence_of_element_located((By.ID, 'formComp:repeatCompromissoLista:0:tableRealizacao:0:subtableVinculacoes:0:vinculacao_input')))
    vinc = browser.find_element_by_id('formComp:repeatCompromissoLista:0:tableRealizacao:0:subtableVinculacoes:0:vinculacao_input')
    vinc.send_keys('400')
    enterElem5 = wait.until(EC.element_to_be_clickable((By.ID, 'formComp:buttonConfirmar')))
    enterElem5 = browser.find_element_by_id('formComp:buttonConfirmar')
    enterElem5.send_keys(Keys.ENTER)#digitar a vinculação e dar enter, fazer isso dez vezes, ver função range
    time.sleep(int(segundosv))

enterElem6 = wait.until(EC.presence_of_element_located((By.ID, 'formComp:buttonRetornar')))
enterElem6 = wait.until(EC.element_to_be_clickable((By.ID, 'formComp:buttonRetornar')))
enterElem6 = browser.find_element_by_id('formComp:buttonRetornar')
enterElem6.send_keys(Keys.ENTER)
rp = wait.until(EC.presence_of_element_located((By.ID, 'formComp:tipoDocHabil_input')))
time.sleep(int(segundos))

первый

третий

1 Ответ

0 голосов
/ 10 апреля 2019

Вы можете сделать следующее и выйти из цикла while, нажав:)

counter = 1
while counter < 200:
    try:
        browser.find_element_by_id("button")).click()
        """ Break out of our loop """
        break
    except NoSuchElementException
        """ Increment counter, remove if needed """
        print("Retry: %s"% str(counter))
        counter += 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...