Селеновый элемент не является трудноразрешимым

#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')
 

Если это не сработает, то две вещи :

  1. Запустите свой браузер во весь экран : driver.maximize_window()
  2. Использование 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. Это работает, вы спасаете жизнь. Большое вам спасибо, большое вам спасибо.