Не удалось нажать кнопку Ввод после ввода строки поиска в поле поиска веб-сайта с помощью веб-драйвера selenium

#python-3.x #selenium-webdriver #css-selectors #selenium-firefoxdriver

Вопрос:

Я пытаюсь открыть браузер, ввести элемент поиска в поле ввода поиска и выполнить ввод.

Я могу открыть браузер и ввести ключевое слово для поиска в поле поиска, но я не могу выполнить ввод. Кроме того , когда я ввожу ключевое слово, я получаю несколько предложений о том, что я не смог выбрать первый пункт. Я не уверен, что происходит не так с кодом.

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

browser = webdriver.Firefox()

browser.get("https://www.tickertape.in/stocks/")
browser.maximize_window()
inputElement=browser.find_element_by_id('search-stock-input')
inputElement.click()
inputElement.send_keys('Reliance industries')
inputElement.click()
 

Я попробовал ниже два варианта, чтобы нажать/войти в список, но я не могу выбрать/ввести его.

 inputElement = wait(browser, 5).until(EC.visibility_of_element_located((By.CSS_SELECTOR, '.Select-option#"react-autowhatever-1-section-0-item-1')))
inputElement.click()


actions = ActionChains(browser)
actions.move_to_element(inputElement).click().send_keys('Reliance industries')
actions.perform()
 

Это HTML-код.

 //*[@id="search-stock-input"]

<input type="search" value="Reliance Industries" autocomplete="off" aria-autocomplete="list" aria-controls="react-autowhatever-1" class="jsx-4060663325 stock-input-box full-width" placeholder="Search stocks, indices, ETFs, Mutual Funds or brands" maxlength="80" id="search-stock-input" aria-label="search text">

<div id="react-autowhatever-1" role="listbox" class="jsx-513088474 jsx-507199909 jsx-145021258 react-autosuggest__suggestions-container"><ul class="jsx-513088474 jsx-507199909 jsx-145021258 d-flex tags-list"></ul><div class="jsx-513088474 jsx-507199909 jsx-145021258 assets-suggestion-container "></div></div>
 

Это скриншот веб — сайта
Скриншот

Заранее спасибо

Комментарии:

1. Я сделаю так, как будто я не знал, что мне нужно принять ответ. Я проверю рекомендации.

2. Дайте мне знать, сработал ли для вас мой ответ

3. Веб-браузер открывается, но ключевое слово не ищется, и конкретный сайт с поиском по ключевым словам не открывается.

4. конечно, в моем коде отсутствует какой-то код, который у вас уже есть. Обновим его, чтобы было ясно

5. Все еще открывается веб-страница, но на ней не выполняется поиск по ключевому слову, и конкретный сайт по ключевым словам не открывается. Я получаю следующий журнал после выполнения кода . webdriver.common.action_chains. Цепочки действий по адресу 0x1abf6b19af0>

Ответ №1:

Попробуйте это, надеюсь, это сработает

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

browser = webdriver.Firefox()

browser.get("https://www.tickertape.in/stocks/")
browser.maximize_window()
inputElement=browser.find_element_by_id('search-stock-input')
inputElement.click()
inputElement.send_keys('Reliance industries')
inputElement.click()

inputElement = wait(browser, 5).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#search-stock-input")))
inputElement.click()
inputElement.send_keys(Keys.RETURN)
 

Ответ №2:

Попробуйте отправить текст с actions помощью , а не с driver помощью . Это позволит выполнить его медленно и, возможно, решить проблему с предлагаемыми результатами.
Также попробуйте отправить Enter ключ в поле поиска вместо того, чтобы нажимать там.
Также вам следует добавить ожидание, чтобы элемент поля поиска был полностью отображен.
Как показано ниже:

 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
from selenium.webdriver.common.action_chains import ActionChains

browser = webdriver.Firefox()

wait = WebDriverWait(browser, 20)
actions = ActionChains(browser)

browser.get("https://www.tickertape.in/stocks/")
browser.maximize_window()
input_element = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#search-stock-input")))
actions.move_to_element(input_element)
actions.click()
actions.send_keys('Reliance industries')
actions.send_keys(Keys.RETURN)
 

В случае, если

 actions.send_keys(Keys.RETURN)
 

не сработало, вы можете попробовать

 actions.send_keys(Keys.ENTER)