python selenium заполните форму ответа на 3 веб-страницах подряд

1

Я использую код ниже, чтобы заполнить форму ответа на веб-странице. Если найден ключ в словаре, он заполняет форму ответа с соответствующим значением:

secuQA = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6}
q_element = browser.find_element_by_id("secu_ques")
question_strings = q_element.text.split(" ")

for key in secuQA:
    if key in question_strings:
        ans = secuQA[key]    
        ansElem = browser.find_element_by_id("secu_answ")
        ansElem.click()
        ansElem.send_keys(ans)
        ansElem.send_keys(Keys.ENTER)
        break

3 таких страницы появляются в строке (в том же формате, только с разными случайными вопросами). Как сделать код заполнять формы ответов на всех трех страницах?

  • 0
    Цикл по нумерации страниц. И поместите свой код внутри этого
Теги:
selenium

1 ответ

2
Лучший ответ

Вы можете просмотреть все страницы, добавив некоторые команды ожидания, чтобы сделать ваш код более надежным. Что-то вроде:

#necessary imports 
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC


secuQA = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6}


for question in range(3): # loop through 3 pages

    WebDriverWait(browser, 20).until(
EC.presence_of_element_located((By.ID, "secu_ques"))) # wait until the question has been loaded on the page

    q_element = browser.find_element_by_id("secu_ques")
    question_strings = q_element.text.split(" ")

    for key in secuQA:
        if key in question_strings:
            ans = secuQA[key]    
            ansElem = browser.find_element_by_id("secu_answ")
            ansElem.click()
            ansElem.send_keys(ans)
            ansElem.send_keys(Keys.ENTER)
            break

    time.sleep(1)#lets wait a while to the next page to load

Ещё вопросы

Сообщество Overcoder
Наверх
Меню