Python Selenium найти элемент по xpath или по id - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь ввести текст в текстовое поле на веб-странице, но не могу его найти. Я попытался найти его с помощью xpath с использованием заполнителя, но, возможно, имел неправильный синтаксис, поскольку он выдавал ошибку.

Ошибка, которую я получаю с приведенным ниже python, равна element not interactable - но это текст поле? неужели это неразрешимо?

HTML:

<div class="name-filter-input"> == $0
  <input placeholder="Search" ng-model="filter"
  class="ng-pristine ng-valid">
</div>

Мой Python:

browser.find_element_by_class_name('name-filter-input')
campaign_text_field = browser.find_element_by_class_name('name-filter-input')
campaign_text_field.send_keys(x)

Ответы [ 2 ]

1 голос
/ 07 января 2020

Кажется, вы пытаетесь взаимодействовать с делением вместо поля ввода.

Не могли бы вы изменить имя класса следующим образом:

campaign_text_field = browser.find_element_by_class_name('ng-pristine ng-valid')
0 голосов
/ 07 января 2020

Используйте CSS Селектор для элемента ввода.

campaign_text_field = browser.find_element_by_css_selector('input.ng-pristine.ng-valid')
campaign_text_field.send_keys("XXX")

Для лучшей практики вызовите WebDriverWait () и дождитесь element_to_be_clickable ()

WebDriverWait(browser,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'input.ng-pristine.ng-valid'))).send_keys("XXX")

Добавьте следующие библиотеки.

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