ElementNotInteractableException: ошибка элемента не взаимодействовала при попытке поиска акций на www.finanzen.net с использованием Selenium и Python - PullRequest
3 голосов
/ 30 марта 2020

Я пытаюсь найти товар на www.finanzen.net, используя селен, но всегда получаю

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

from selenium import webdriver

import time

chrome_options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications" : 2}
chrome_options.add_experimental_option("prefs", prefs)
chrome_options.add_argument("start-maximized")
driver = webdriver.Chrome(options=chrome_options, executable_path=r'F:\chromedriver.exe')

driver.get('https://www.finanzen.net/')
time.sleep(5)
cookie_banner_button = driver.find_element_by_xpath("//button[@onclick='cookieBannerOverlayClick();']")
cookie_banner_button.click()

search_field = driver.find_element_by_xpath("//input[@class='search-input']")


#search_field.click()
search_field.send_keys('bmw')
search_field.submit()
time.sleep(5)
driver.quit()

HTML:

html-code of element

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Для поиска акций на www.finanzen.net вам нужно вызвать WebDriverWait для element_to_be_clickable(), и вы можете использовать любую из следующих Стратегий локатора :

  • Использование CSS_SELECTOR:

    driver.get('https://www.finanzen.net/')
    submit_button = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "form[name='mmssearch'] div.search-group>input.search-input[name='_search']")))
    submit_button.send_keys('bmw')
    submit_button.submit()
    
  • Использование XPATH:

    driver.get('https://www.finanzen.net/')
    submit_button = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//form[@name='mmssearch']//div[@class='search-group']/input[@class='search-input' and @name='_search']")))
    submit_button.send_keys('bmw')
    submit_button.submit()
    
  • Примечание : необходимо добавить следующие операции импорта:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • Снимок браузера:

finanzen

1 голос
/ 30 марта 2020

Используемый вами xpath указывает на два элемента, и первый элемент, на который он указывает, не взаимодействует, из-за чего вы получаете исключение.
Найден правильный xpath для элемента, обратитесь к код ниже:

from selenium import webdriver

import time

chrome_options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications" : 2}
chrome_options.add_experimental_option("prefs", prefs)
chrome_options.add_argument("start-maximized")
driver = webdriver.Chrome(options=chrome_options, 
executable_path=r'F:\chromedriver.exe')

driver.get('https://www.finanzen.net/')
time.sleep(5)
cookie_banner_button = driver.find_element_by_xpath("//button[@onclick='cookieBannerOverlayClick();']")
cookie_banner_button.click()

search_field = driver.find_element_by_xpath("//div[@class='shadow']//input[@class='search-input']")
search_field.send_keys('bmw')
search_field.submit()
time.sleep(5)
driver.quit()
...