Selenium обнаруживает ошибку элемента: объект «WebDriver» не имеет атрибута «find_element_by_id».
Selenium обнаруживает ошибку элемента: объект «WebDriver» не имеет атрибута «find_element_by_id».

Добро пожаловать на подписку на общедоступную учетную запись TestingStudio, чтобы узнать больше необходимых навыков для разработки тестов.

Pycharm создал новый проект для тестирования веб-автоматизации. Я установил библиотеку Selenium напрямую и обнаружил, что написанный ранее код позиционирования элементов Selenium сообщал об ошибке после запуска. Я обнаружил, что после обновления Selenium до новой версии (версия 4. x), предыдущий Синтаксис некоторых часто используемых кодов изменился. Конечно, если вы не обновили или не загрузили последнюю версию Selenium, это не повлияет, и вы все равно сможете использовать предыдущий метод записи. Следующим шагом будет обсуждение нового синтаксиса кода элемента позиционирования Selenium после выхода новой версии. Пожалуйста, не наступайте на эту ловушку снова.

Как написать позиционирование элемента в версии Selenium3

Язык кода:txt
копировать
inputTag = driver.find_element_by_id("value")  # Используйте идентификатор, чтобы найти

inputTags = driver.find_element_by_class_name("value")  # Используйте позиционирование имени класса

inputTag = driver.find_element_by_name("value")  # Позиция с использованием атрибута имени

inputTag = driver.find_element_by_tag_name("value")  # Позиционирование с использованием имен тегов

inputTag = driver.find_element_by_xpath("value")  # Используйте XPath, чтобы найти

inputTag = driver.find_element_by_css_selector("value")  # Позиционирование с помощью селекторов CSS

До обновления версии мы использовалиdriver.findelement_byимя метода(”value”),Имена методов: by_id, by_class_name, by_name и т. д. и «значение». — значение, переданное в,Возьмем в качестве примера кнопку поиска Baidu.,Инструменты разработчика браузера могут просматривать атрибут id="su" в исходном коде HTML.,Использование старой версии записи для использования значения id для поиска поля поиска должно быть:

Язык кода:txt
копировать
searchTag = driver.find_element_by_id("su")

До обновления версии соответствующий элемент обычно может быть правильно расположен при запуске. Однако после обновления Selenium после запуска будет сообщено об ошибке. Возьмите в качестве примера driver.find_element_by_id("value") (другие ошибки аналогичны ). следующее) сообщение об ошибке), указанная выше ошибка появится после запуска.

Selenium версии 4 больше не поддерживает указанный выше метод записи. Нам нужно импортировать другие методы и изменить метод записи позиционирования элементов:

Знакомство с методом By

Язык кода:txt
копировать
from selenium.webdriver.common.by import By

Новый метод позиционирования элемента

Язык кода:txt
копировать
 # searchTag = driver.find_element_by_id("value")  # Используйте идентификатор, чтобы найти
 # Изменить на:
# searchTag = driver.find_element(By.ID, "value")

 # searchTag = driver.find_element_by_class_name("value")  # Используйте позиционирование имени класса
# Изменить на:
# searchTag = driver.find_element(By.CLASS_NAME, "value")

# searchTag = driver.find_element_by_name("value")  # Позиция с использованием атрибута имени
# Изменить на:
searchTag = driver.find_element(By.NAME, "value")

# searchTag = driver.find_element_by_tag_name("value")  # Позиционирование с использованием имен тегов
# Изменить на:
searchTag = driver.find_element(By.TAG_NAME, "value")

# searchTag = driver.find_element_by_xpath("value")  # Используйте XPath, чтобы найти
# Изменить на:
searchTag = driver.find_element(By.XPATH, "value")

# searchTag = driver.find_element_by_css_selector("value")  # Позиционирование с помощью селекторов CSS
# Изменить на:
searchTag = driver.find_element(By.CSS_SELETOR, "value")

После модификации все будет нормально, и понижать версию селена не нужно.

boy illustration
Java перехватывает строку после определенного символа_java, как перехватить строку
boy illustration
Давайте кратко поговорим о технологии копирования на записи.
boy illustration
Выполнение собственных условий SQL-запроса в MyBatis Plus
boy illustration
Напоминание о выпуске общедоступной учетной записи WeChat (интерфейс сообщения шаблона общедоступной учетной записи WeChat)
boy illustration
5 шагов для установки среды протокола
boy illustration
Наиболее полные коды состояния HTTP
boy illustration
На основе языка Go мы шаг за шагом научим вас внедрять структуру системы управления серверной частью.
boy illustration
Эффективное управление журналами с помощью Spring Boot и Log4j2: подробное объяснение конфигурации
boy illustration
Что делать, если telnet не является внутренней или внешней командой [легко понять]
boy illustration
php-объект для анализа json_php json
boy illustration
Введение в принцип запуска Springboot, процесс запуска и механизм запуска.
boy illustration
Высокоуровневые операции Mongo, если данные не существуют, вставка и обновление, если они существуют (pymongo)
boy illustration
Проектирование и внедрение системы управления электронной коммерцией на базе Vue и SpringBoot.
boy illustration
Статья длиной в 9000 слов знакомит вас с процессом запуска SpringBoot — самым подробным процессом запуска SpringBoot в истории — с изображениями и текстом.
boy illustration
Как настроить размер экрана в PR. Учебное пособие по настройке размера видео в PR [подробное объяснение]
boy illustration
Элегантный и мощный: упростите операции ElasticSearch с помощью easy-es
boy illustration
Проект аутентификации по микросервисному токену: концепция и практика
boy illustration
【Java】Решено: org.springframework.http.converter.HttpMessageNotWritableException.
boy illustration
Изучите Kimi Smart Assistant: как использовать сверхдлинный текст, чтобы открыть новую сферу эффективной обработки информации
boy illustration
Начало работы с Docker: использование томов данных и монтирования файлов для хранения и совместного использования данных
boy illustration
Использование Python для реализации автоматической публикации статей в публичном аккаунте WeChat
boy illustration
Разберитесь в механизме и принципах взаимодействия потребителя и брокера Kafka в одной статье.
boy illustration
Spring Boot — использование Resilience4j-Circuitbreaker для реализации режима автоматического выключателя_предотвращения каскадных сбоев
boy illustration
13. Springboot интегрирует Protobuf
boy illustration
Примечание. Инструмент управления батареями Dell Dell Power Manager
boy illustration
Общая интерпретация класса LocalDate [java]
boy illustration
[Базовые знания ASP.NET Core] -- Веб-API -- Создание и настройка веб-API (1)
boy illustration
Настоящий бой! Подключите Passkey к своему веб-сайту для безопасного входа в систему без пароля.
boy illustration
Руководство по настройке Nginx: как найти, интерпретировать и оптимизировать настройки Nginx в Linux
boy illustration
Typecho отображает использование памяти сервера