При попытке выполнить команды selenium в Python, я не могу импортировать selenium.webdriver.common.by. Однако библиотека ‘selenium’ импортируется без проблем. Я запускаю программу в VS Code.
Скрипт:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://**.com")
search_id = "123"
search_elem = driver.find_element(By.ID, search_id)
#search_elem.send_keys("**email.com")
breakpoint()
Ошибка:
PS C:\Users\Desktop\python selenium> python test.py
DevTools listening on ws://***/devtools/browser/44ebdc50-e0c6-43e6-a329-85c2e96b0892
Traceback (most recent call last):
File "C:\Users\Desktop\python selenium\test.py", line 7, in <module>
search_elem = driver.find_element(By.ID, search_id)
File "C:\Python310\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 748, in find_element
return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"]
File "C:\Python310\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 354, in execute
self.error_handler.check_response(response)
File "C:\Python310\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 229, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="i0116"]"}
(Session info: chrome=128.0.6613.138); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
Ответ
Когда вы пытаетесь импортировать By
из selenium.webdriver.common.by
и получаете ошибку, есть несколько возможных причин, которые могут привести к этой проблеме. Давайте рассмотрим шаги для решения этой проблемы.
1. Убедитесь, что Selenium установлен
Первое, что нужно проверить — это то, что библиотека Selenium действительно установлена. Для этого откройте терминал и выполните следующую команду:
pip show selenium
Если библиотека не установлена, вы можете установить её с помощью команды:
pip install selenium
2. Проверьте версию Selenium
Убедитесь, что у вас установлена актуальная версия Selenium. Некоторые функции могут быть недоступны в старых версиях. Проверить текущую версию можно так:
pip list | grep selenium
Для обновления Selenium используйте:
pip install --upgrade selenium
3. Проверьте код импорта
Убедитесь, что ваш код импорта выглядит правильно. Ваш импорт должен выглядеть так:
from selenium import webdriver
from selenium.webdriver.common.by import By
Если это верно, переходите к следующему шагу.
4. Ошибки, связанные с элементами
Ваш код показывает, что вы получаете ошибку NoSuchElementException
. Эта ошибка возникает, когда Selenium не может найти элемент по указанному идентификатору.
Обратите внимание на следующее:
- Убедитесь, что ID, который вы ищете (
123
), совпадает с ID элемента на странице. Возможно, он меняется динамически или отсутствует на момент выполнения сценария. - Попробуйте использовать
WebDriverWait
для ожидания загрузки элемента. Это может помочь, если элемент появляется с задержкой.
Пример использования WebDriverWait
:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("https://**.com")
search_id = "123"
try:
search_elem = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, search_id))
)
# search_elem.send_keys("**email.com")
except Exception as e:
print(f"An error occurred: {e}")
finally:
driver.quit()
Заключение
Исправьте импорт, проверьте версию библиотеки Selenium и убедитесь, что элемент с указанным ID присутствует на странице, используя WebDriverWait
. Это должно помочь решить вашу проблему. Если вы продолжаете сталкиваться с трудностями, проверьте HTML-структуру на сайте и уточните, действительно ли существует элемент с этим ID.