ElementNotInteractableException - Python / селен не дублируется - PullRequest
0 голосов
/ 17 октября 2019

Возникают проблемы. Отправляет ключи в текстовое поле пароля после того, как оно было выбрано, и я вижу, что курсор мигает в ожидании ввода текста

Это HTML

<div class="hm-Login ">
    <div class="hm-Login_UserNameWrapper ">
        <input type="text" class="hm-Login_InputField ">
        <div class="hm-Login_InputText ">Join</div>
    </div>
    <div class="hm-Login_PasswordWrapper ">
        <input type="text" class="hm-Login_InputField ">
        <input type="password" class="hm-Login_InputField Hidden ">
        <button tabindex="0" class="hm-Login_LoginBtn ">GO</button>
        <div class="hm-Login_InputText ">Lost Login?</div>
    </div>
</div>

этомой код

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

import time
from selenium import webdriver

driver = webdriver.Chrome("xxxxx/chromedriver")

driver.get('https://www.bet365.com.au/#/HO/');
driver.find_element_by_xpath("//*[@id='TopPromotionBetNow']").click()

WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, "//input[@type='text']"))).click()

driver.find_element_by_class_name("hm-Login_InputField").click()                                          
#time.sleep(5) # Let the user actually see something!

#username
elem = driver.find_element_by_class_name("hm-Login_InputField")
elem.click()
elem.clear() 
elem.send_keys("xxxx")

#password
elem = driver.find_element_by_xpath("//div[@class='hm-Login_PasswordWrapper ']//input[@type='text']")
#elem = driver.find_element_by_xpath("//input[@type='text']")
elem.clear() 
elem.click()

#attempt 1
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='hm-Login_PasswordWrapper ']//input[@type='text']"))).send_keys("xx")

#attempt 2
driver.implicitly_wait(10) # seconds
elem.send_keys("xxxxx!")

это ошибка ElementNotInteractableException: элемент не взаимодействует

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

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

добавив следующее после указания драйвера, похоже, добился цели, и .send_keys ("xxxx") теперь работает

driver.implicitly_wait (15)

http://allselenium.info/wait-for-elements-python-selenium-webdriver/

0 голосов
/ 17 октября 2019

XPATH, который вы используете, получает элемент с type = text. Как только вы щелкаете по этому элементу, имя класса добавляется как «Скрытый», поэтому при попытке ввести текст в этот элемент вы получаете эту ошибку. Попробуйте следующее решение: сначала вы щелкаете элемент с type = text, а затем очищаете и отправляете ключи к элементу-брату (type = password)

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='hm-Login_PasswordWrapper ']//input[@type='text']"))).click() 

# Now, Enter text into element with type=password attribute
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//div[contains(@class,'hm-Login_PasswordWrapper ')]//input[@type='password']"))).clear()
driver.find_element_by_xpath("//div[@class='hm-Login_PasswordWrapper ']//input[@type='text']").send_keys("xxxxx!")

Я протестировал это с Java и работает нормально. Извините, у меня сейчас нет Python, но это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...