Web
В рамках автоматизированного тестирования,Имитация пользователей и раскрывающихся списков(Также называется полем выбора или раскрывающимся списком.)Взаимодействие – общая задача。Selenium
— популярный инструмент автоматического тестирования, который может взаимодействовать с Web
взаимодействовать со страницей. В этой статье будет представлено существованиеиспользовать Selenium
Как эффективно делать выбор в раскрывающемся списке при использовании headless-браузера.Python 3.12.0
Select
Чтобы выбрать раскрывающийся список, вот простой пример:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Select Dropdown Page</title>
</head>
<body>
<h1>Select Dropdown Example</h1>
<label for="dropdown"></label><select id="dropdown">
<option value="option1">Option 1</option>
<option value="option2">Option 2</option>
<option value="option3">Option 3</option>
</select>
<p id="selectedOption">Selected Option: </p>
<script>
document.getElementById("dropdown").addEventListener("change", function () {
var selectedOption = document.getElementById("selectedOption");
selectedOption.innerText = "Selected Option: " + this.value;
});
</script>
</body>
</html>
selenium
использовать Select
Выбирайте, здесь мы используем select_by_visible_text
метод:import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
# Инициализируйте WebDriver, укажите chrome_options
driver = webdriver.Chrome()
# Открыть тестовую страницу
driver.get("xxxxxxx")
# Выберите вариант из раскрывающегося списка
def select_option_by_visible_text(selector, option_text):
select = Select(driver.find_element(By.CSS_SELECTOR, selector))
select.select_by_visible_text(option_text)
# Пример: выбор опции раскрывающегося списка с помощью видимого текста
select_option_by_visible_text("#dropdown", "Option 2")
# Выполнение других операций, таких как отправка форм и т. д.
# ...
time.sleep(1000)
# Закрыть браузер
driver.quit()
1. Метка не может быть выбрана ElementNotInteractableException: Message: element not interactable Элемент не виден
2、существовать Это может быть невозможно в рамкахиспользовать Выберите, вы можете заполнить поле ввода напрямую. Когда вы закончите его успешно заполнять, вы столкнетесь с третьей проблемой.
3. Заполненный раскрывающийся список выбрать невозможно.,Поскольку раскрывающийся список может вызвать соответствующее событие.,Конечно, вы также можете медленно попытаться найти события, которые необходимо выполнить.
# Получите метку элемента, по которой можно щелкнуть, чтобы открыть раскрывающийся список, и щелкните ее. Показать раскрывающийся список
# Получите все элементы раскрывающегося списка, пройдите и выберите нужные элементы и щелкните, чтобы выбрать.
# input_1 селектор стиля Нажмите Показать раскрывающийся список
# select_1 селектор стиля Получить все элементы раскрывающегося списка
# элементы для соответствия
def auto_fill_select(input_1, select_1, text):
print("Начало заполнения:" + text)
WebDriverWait(driver, 60).until(
EC.presence_of_element_located((By.CSS_SELECTOR, input_1))).click()
selects = WebDriverWait(driver, 60).until(
EC.presence_of_all_elements_located(
(By.CSS_SELECTOR, select_1))
)
for element in selects:
if element.text == text:
element.click()
break
ElementNotInteractableException
Фактически, это связано с тем, что некоторые макеты стилей требуют существования при определенных условиях.,Вам необходимо убедиться, что когда выиспользоватькто-тоселектор стилячас,Он хранится на странице существования
Или, возможно, скорость вашего кода слишком высока, а новый стиль еще не загружен, поэтому вы не сможете его выбрать. Вы можете подождать, пока элемент загрузится временно.
Например: раскрывающийся элемент может быть доступен только при появлении раскрывающегося списка.
👋 привет, я Lorin Лорейн, один Java Разработчик бэкэнд-технологий!девиз:Technology has the power to make the world a better place.
🚀 Моя страсть к технологиям — это моя мотивация продолжать учиться и делиться ими. Мой блог — это место об экосистеме Java, серверной разработке и последних технологических тенденциях.
🧠 Будучи энтузиастом серверных технологий Java, я не только с энтузиазмом изучаю новые возможности языка и глубину технологий, но также с радостью делюсь своими идеями и передовым опытом. Я верю, что обмен знаниями и сотрудничество с сообществом могут помочь нам расти вместе.
💡 В моем блоге вы найдете подробные статьи об основных концепциях Java, базовой технологии JVM, часто используемых платформах, таких как Spring и Mybatis, управлении базами данных, таких как MySQL, промежуточном программном обеспечении для обработки сообщений, таком как RabbitMQ и Rocketmq, оптимизации производительности и т. д. Я также поделюсь некоторыми советами по программированию и методами решения проблем, которые помогут вам лучше освоить программирование на Java.
🌐 Я поощряю взаимодействие и создание сообщества, поэтому, пожалуйста, оставляйте свои вопросы, предложения или запросы по темам и дайте мне знать, что вас интересует. Кроме того, я буду делиться последними новостями Интернета и технологий, чтобы вы всегда были в курсе последних событий в мире технологий. Я с нетерпением жду возможности вместе с вами двигаться вперед по пути технологий и исследовать безграничные возможности мира технологий.
📖 Следите за обновлениями моего блога и давайте вместе стремиться к техническому совершенству.