#python #selenium #selenium-webdriver
Вопрос:
Здесь происходит странный случай. Я пытаюсь вставить некоторые ключи в поле ввода имени пользователя и пароля. Это работало просто отлично, и вдруг все прекратилось.
Просто чтобы всем было ясно. Как только я нажимаю на кнопку входа, я перенаправляюсь на страницу входа, где у меня есть поля ввода имени пользователя и пароля. и их дивы следующие.
в моем коде selenium я указываю элемент имени пользователя и пароля по их имени.
user = driver.find_element_by_name('username')
user.send_keys('Myusername')
user.send_keys(Keys.RETURN)
Но когда я запускаю свой код, я получаю ошибку:
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
(Session info: chrome=91.0.4472.106)
Есть идеи, почему возникает ошибка? Пожалуйста, если вам нужна дополнительная информация, просто дайте мне знать
Редактировать:
Ожидание сработало, но только с первой попытки, если я запущу его во второй раз, он выдаст эту ошибку:
Traceback (most recent call last):
File "test.py", line 25, in <module>
usern = wait.until(EC.element_to_be_clickable((By.NAME, "username"))).send_keys('myusername')
File "/Users/<user>/opt/anaconda3/lib/python3.8/site-packages/selenium/webdriver/support/wait.py", line 80, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
Это полный код, который я пробовал:
wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.NAME, "username"))).send_keys('myusername')
wait.until(EC.element_to_be_clickable((By.NAME, "password"))).send_keys('mypassword')
и это приводит к вышеуказанной ошибке.
Комментарии:
1. Вы перешли в безголовый режим?
2. Нет, я этого не делал. Как я могу это сделать? Извините, я полный новичок. Как получилось, что он работал раньше и вдруг просто остановился? Большое тебе спасибо за твое терпение, приятель
3. Какова полная обратная связь?
4. У вас есть какая-то задержка / ожидание до
user = driver.find_element_by_name('username')
этого ?5. У меня есть время. Сон(10)
Ответ №1:
Я думаю, тебе нужно ExplicitWait
:
попробуйте это :
wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.NAME, "username"))).send_keys('your user name')
Если это не сработает, то две вещи :
- Запустите свой браузер во весь экран :
driver.maximize_window()
- Использование ActionsChain :
wait = WebDriverWait(driver, 10)
ActionChains(driver).move_to_element(wait.until(EC.element_to_be_clickable((By.NAME, "username")))).send_keys('your user name').perform()
Обновление 1 :
driver.get("<link>")
wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.XPATH, "//*[local-name()='svg' and contains(@class, 'Card__OTSigninButton-sc')]"))).click()
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div[class$='visible-lg'] input#signInFormUsername"))).send_keys('user name')
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div[class$='visible-lg'] input#signInFormPassword"))).send_keys('password')
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div[class$='visible-lg'] input[name='signInSubmitButton']"))).click()
импорт :
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
Комментарии:
1. Первая часть сработала, но только с первой попытки, я попытался запустить ее во второй раз, добавив код для пароля, и начал терпеть неудачу. Я обновил свой пост с полной ошибкой трассировки
2. Можете ли вы поделиться тем кодом, для которого вы написали
password
?также можете ли вы прикрепить фотографию страницы входа в систему ? Я дал еще 2 способа решения .. попробуйте и дайте мне знать3. Я устал от обоих решений. и тот, который я обновил в своем посте, сработал с первой попытки, но теперь терпит неудачу
4. Могу ли я получить прямой URL-адрес ?
5. Это работает, вы спасаете жизнь. Большое вам спасибо, большое вам спасибо.