Невозможно найти элементы в Selenium (Python) - PullRequest
0 голосов
/ 19 апреля 2020

Я пытался использовать Selenium с Chrome, но не смог найти элементы на странице, я попробовал это с текстом ссылки, XPath, полным XPath, но была только одна ошибка, и он не нажимал на элемент.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver= webdriver.Chrome()
driver.get("https://www.youtube.com/")
print(driver.title)
driver.find_element_by_xpath("//*[@id='search']").click()

Выход:

 UserWarning: find_element_by_* commands are deprecated. Please use find_element() instead
  warnings.warn("find_element_by_* commands are deprecated. Please use find_element() instead")

Ответы [ 4 ]

0 голосов
/ 20 апреля 2020

Вы можете просто использовать:

driver.find_element_by_id('search')

Для получения дополнительной информации прочитайте do c

0 голосов
/ 19 апреля 2020

Я изменил xpath поля поиска на (есть несколько элементов с идентификатором 'search'): driver.find_element_by_xpath("//input[@id='search']").click()

Затем я запустил ваш код, и он работал без ошибок или предупреждений. Это исправить для вас?

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

driver.find_element_by_xpath("//input[@id='search']").send_keys("Your search query")
driver.find_element_by_xpath("//button[@id='search-icon-legacy']").click()

Что касается предупреждения: "find_element_by_* commands are deprecated. Please use find_element() instead" Я считаю, что это потому, что селен хочет, чтобы вы использовали:

from selenium.webdriver.common.by import By
driver.find_element(By.XPATH, '//input[@id='search']')
0 голосов
/ 19 апреля 2020

Я только что нашел что-то в документации по селену. Попробуйте использовать это:

driver.findElement(By.id("search"))

Я надеюсь, что это работает.

0 голосов
/ 19 апреля 2020

В соответствии с вашим комментарием вы используете Selenn Webdriver версии 4.0.0a5, которая, однако, не является стабильной. Существует вероятность того, что функции могут быть добавлены / удалены между этим выпуском. Можете ли вы вернуться к 3.141.59 и попробовать:

enter image description here

driver = webdriver.Chrome(executable_path="C:\New folder\chromedriver.exe",chrome_options=chrome_options)
url = 'http://www.youtube.com'
driver.get(url)
driver.maximize_window()
wait = WebDriverWait(driver, 20)

element = wait.until(EC.presence_of_element_located((By.XPATH, "//form[@id='search-form']//div[@id='container']//div[@id='search-input']//input")))

actionChains = ActionChains(driver)
actionChains.move_to_element(element).click().perform()
actionChains.move_to_element(element).send_keys("Test",Keys.RETURN).perform()

Примечание: добавьте ниже импорта в ваше решение

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...