Элемент не взаимодействует при попытке открыть всплывающее окно с помощью Selenium - PullRequest
1 голос
/ 10 октября 2019

Я пытаюсь очистить следующий веб-сайт: https://www.nemlig.com/, но это не так просто, как я привык, поскольку страница, которую я пытаюсь очистить, не является статичной. Я пытаюсь сделать это с помощью Selenium:

enter image description here

, чтобы всплывающее окно с почтовым индексом было видно. Затем введите число и нажмите ввод.

Это мое мнение:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

browser = webdriver.Chrome(executable_path=r"C:\Users\user\lib\chromedriver_77.0.3865.40.exe")
browser.get('https://www.nemlig.com/')

elem = browser.find_element_by_xpath("//div[@class='timeslot-statusbutton']")
elem.clear()
elem = browser.find_element_by_xpath("//input[@class='prompt__input ng-pristine ng-valid ng-empty ng-touched']")
elem.send_keys("2300")
elem.send_keys(Keys.RETURN)

Но все, что после browser.get возвращает мне эту ошибку:

Traceback (последний вызов был последним):

Файл "", строка 8, в elem = browser.find_element_by_xpath ("// div [@ class = 'timeslot-statusbutton']"). Click ()

Файл "D: \ Anaconda3 \ lib \ site-packages \ selenium \ webdriver \ remote \ webelement.py", строка 80, в клике self._execute (Command.CLICK_ELEMENT)

Файл "D: \ Anaconda3 \ lib \ site-packages \ selenium \ webdriver \ remote \ webelement.py ", строка 633, в _execute вернуть self._parent.execute (команда, params)

Файл" D: \ Anaconda3\ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py ", строка 321, в файле execute self.error_handler.check_response (ответ)

Файл" D: \ Anaconda3 \ lib \ site-packages \ "selenium \ webdriver \ remote \ errorhandler.py ", строка 242, в check_response поднять исключение_класса (сообщение, экран, трассировка стека)

ElementNotInteractableException: элемент нетt интерактивный (информация о сеансе: chrome = 77.0.3865.90) ​​

Как я могу сделать это правильно?

1 Ответ

1 голос
/ 10 октября 2019

Вы можете попробовать этот код:

driver = webdriver.Chrome(executable_path = r'C:/Users/***/Downloads/BrowserDriver/chromedriver_win32/chromedriver.exe')
wait = WebDriverWait(driver,10)

driver.maximize_window()

driver.get("https://www.nemlig.com/")

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".timeslot-prompt.initial-animation-done")))

wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[type='tel'][class^='pro']"))).send_keys('ABC')  

wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".btn.prompt__button"))).click()  

импорт будет:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...