Selenium: Невозможно заполнить поле ввода ключами отправки и выполнением скрипта - PullRequest
0 голосов
/ 04 апреля 2020

Мне нужно сделать скрипт входа на сайт https://cbdbene.com/

Login Page

, но когда я пытаюсь отправить ключи в поле электронной почты я получаю сообщение об ошибке

selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable

Я пытался использовать

login_email = browser.find_element_by_xpath("//input[@id='login_email']")
driver.execute_script("argument[0].setAttribute('value', 'abs@gmail.com');", login_email)

, но это также не помогло,

Даже при нажатии на элемент не имеет ответа,

login_email = browser.find_element_by_xpath("//input[@id='login_email']")
driver.execute_script("argument[0].click();", login_email)

Я не знаю, как заполнить эту форму. Может кто-нибудь объяснить мне, что я здесь делаю не так?

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

Попробуйте приведенное ниже решение:

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



driver = webdriver.Chrome(executable_path=r"C:\New folder\chromedriver.exe")
driver.maximize_window()
wait = WebDriverWait(driver, 50)
driver.get("https://cbdbene.com/")



warning = wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@class='modal-dismiss']//i//*[local-name()='svg']")))
driver.find_element_by_tag_name('body').send_keys("Keys.ESCAPE")

warning.click()


loginIcon = wait.until(EC.element_to_be_clickable((By.XPATH, "//li[3]//span[1]//div[1]//div[1]//*[local-name()='svg']")))
loginIcon.click()

inputBox = wait.until(EC.element_to_be_clickable((By.XPATH, "//div[4]//div[1]//div[1]//div[1]//div[1]//div[1]//div[1]//div[1]//span[1]//input[1]")))
inputBox.send_keys("Username")

Вывод:

enter image description here

0 голосов
/ 04 апреля 2020

Если вы используете абсолютный xpath, вы увидите 3 элемента input с одинаковыми свойствами. Вызовите WebDriverWait() и element_to_be_clickable () и используйте действительный xpath.samething, что вы делаете с паролем.

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

driver=webdriver.Chrome()
driver.get("https://cbdbene.com/")
WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div.modal-dismiss"))).click()
WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"li.c-nav__list-item>span.c-nav__link"))).click()
WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.XPATH,"(//input[@id='login_email'])[last()]"))).click()
WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.XPATH,"(//input[@id='login_email'])[last()]"))).send_keys("user name")

Browser snapshot:

enter image description here

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