Хорошо, так как, как говорится в названии, я почти не могу заставить свою программу на Python работать, это бот для входа в Instagram, и он фактически не выполняет регистрацию частично, я пробовал оба с использованием цепочек действий, и без них это мой код (python 3.6.1):
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
browser = webdriver.Chrome()
browser.get('https://www.instragram.com')
login_elem = browser.find_element_by_xpath('//*[@id="react-root"]/section/main/article/div[2]/div[2]/p/a')
login_elem.click()
user = browser.find_element_by_name("username")
passw = browser.find_element_by_name('password')
ActionChains(browser)\
.move_to_element(user).click()\
.send_keys('test')\
.move_to_element(passw).click()\
.send_keys('test')\
.perform()
login_button = browser.find_element_by_class_name(
'_0mzm- sqdOP L3NKy ')
login_button.click()
Довольно просто, верно? и поскольку синтаксических ошибок нет, я действительно растерялся из-за того, что происходит неправильно, поскольку после запуска кода ничего не происходит после перехода на страницу входа. (Это означает, что на самом деле он не действует в формах имени пользователя и пароля)
Вот что говорит Модуль:
Traceback (последний вызов был последним): File
«C: \ Users \ ferna \ Desktop \ пробная версия script.py», строка 17, в
.send_keys ('test') \ Файл "C: \ Users \ ferna \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ selenium \ webdriver \ common \ action_chains.py",
строка 83, в исполнении
action () Файл "C: \ Users \ ferna \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ selenium \ webdriver \ common \ action_chains.py",
строка 277, в
Command.MOVE_TO, {'element': to_element.id})) Файл "C: \ Users \ ferna \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver. ру»,
строка 321, выполнить
self.error_handler.check_response (response) Файл "C: \ Users \ ferna \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ selenium \ webdriver \ remote \ errorhandler.py",
строка 242, в check_response
повысить исключение_класса (сообщение, экран, отслеживание стека) selenium.common.exceptions.StaleElementReferenceException: сообщение:
ссылка на устаревший элемент: элемент не прикреплен к документу страницы
(Информация о сеансе: chrome = 71.0.3578.98) (Информация о драйвере:
chromedriver = 2.45.615291
(ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387), платформа = Windows NT
10.0.17134 x86_64)
Selenium был установлен неправильно? или ошибка внутри моего кода? Я был бы очень признателен за любую помощь, которую я могу получить.
Кстати, я нахожу элементы имени пользователя и пароля по имени, а не по xpath, так как Instagram изменяет xpath и селектор каждый раз, когда открывается страница, что затрудняет поиск элементов другими способами, по крайней мере, из-за моего очень ограниченного опыта.
Это изображение показывает, как выглядит браузер после тестирования скрипта: