Я использую код ниже, чтобы заполнить форму ответа на веб-странице. Если найден ключ в словаре, он заполняет форму ответа с соответствующим значением:
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 таких страницы появляются в строке (в том же формате, только с разными случайными вопросами). Как сделать код заполнять формы ответов на всех трех страницах?
Вы можете просмотреть все страницы, добавив некоторые команды ожидания, чтобы сделать ваш код более надежным. Что-то вроде:
#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