#python #selenium #selenium-webdriver
Вопрос:
Недавно начал работать с selenium на python, и пока единственным элементом, с которым у меня возникают проблемы, являются динамические выпадающие списки. Например, на веб-странице в разделах «Темы», «Штат» и «Город«. Как обрабатывать эти элементы, которые не видны в DOM. Может, кто-нибудь может показать мне, как они будут решать упомянутый выше пример.
Для subjects он завершается ошибкой в этой строке:
класс SwitchToFrame():
def test1(self):
baseUrl = "https://demoqa.com/automation-practice-form"
driver = webdriver.Chrome()
driver.get(baseUrl)
wait = WebDriverWait(wait = WebDriverWait(driver, timeout=10, poll_frequency=1)
element = wait.until(expected_conditions.element_to_be_clickable((By.XPATH, "//div[@id='subjectsContainer']/div")))
element.send_keys("English")
Ответ №1:
Здесь я перешел к первому варианту в теме после ввода английского. Также, если вы проверите driver.page_source, вы действительно сможете увидеть элементы внутри. Он исчезает после обработки входного тега.
wait=WebDriverWait(driver, 10)
driver.get("https://demoqa.com/automation-practice-form")
element = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#subjectsInput")))
element.send_keys("English")
print(driver.page_source)
elem=wait.until(EC.element_to_be_clickable((By.ID, "react-select-2-option-0")))
driver.execute_script("arguments[0].click()", elem)
Импорт
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
Комментарии:
1. Код работает, но в исходном коде я вижу только react-select-3-input. Любые советы по поиску подобных элементов?
2. Он появляется, когда фокусируется на входных тегах. Итак, сначала вам нужно щелкнуть входной тег.