Поле ввода распознается Selenium, но ключи не отправляются - PullRequest
0 голосов
/ 27 июня 2019

Поле ввода распознается Selenium (выполняется с помощью xpath), но я не могу отправить какие-либо ключи к нему.Нет ошибки, но текст, который я хочу записать в клавиши, не отображается в окне поиска.Поле ввода находится внутри нескольких div и находится в iframe, но я уверен, что позаботился об этом.Что я могу сделать, чтобы решить эту проблему?

driver.implicitly_wait(20)
search = driver.find_element_by_xpath("/html/body/main/div/div/div/div[1]/div/div/div/div/div/div[2]/div/input")
search.send_keys("25%)")

Изображение HTML

Поле ввода не имеет идентификатора и не имеет типалибо, так что я не совсем уверен, как еще найти его, кроме xpath.

Ответы [ 2 ]

0 голосов
/ 27 июня 2019

Я не уверен в разнице между Java и Python, но я предлагаю вам попробовать использовать JavaScriptExecutor для ввода ключей:

Ваш код Python, который получает элемент:

search = driver.find_element_by_xpath("/html/body/main/div/div/div/div[1]/div/div/div/div/div/div[2]/div/input")

Вы в основном передаёте элемент таким образом в Java:

JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].value='<<Add your input String here>>';", search);

Много раз, это работает, когда SendKeys не

0 голосов
/ 27 июня 2019

Используйте класс, чтобы найти элемент div:

search_div = driver.find_element_by_class_name("search-input")
search = search_div.find_element_by_class_name("text")

Кстати:

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

klass = "search-input"
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CLASS_NAME, klass)))
search_div = driver.find_element_by_class_name(klass)
search = search_div.find_element_by_class_name("text")
...