#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)