@sysrepos

Selenium, как найти элемент (поискового запроса)?

Здравствуйте, нахожусь в процессе изучения Selenium.
Не получается сделать простейшую вещь. Определить (найти) элемент страницы – текстовое поле поискового запроса на сайте - https://dzen.ru.
Текстовое поле на яндексе, гугле https://ya.ru/ , https://www.google.com/ этими же способами у меня находятся (находил несколькими разными способами).
Причем через XPath в поиске (в самом браузере) этот элемент тоже находится и в консоли разработчика (для https://dzen.ru.)

Вообщем сам вопрос: как найти/определить элемент поиска (поисковая строка) https://dzen.ru?
Может на сайте есть какая то защита для таких действий?

public void Proc1()
{
 
    IWebDriver driver1 = new ChromeDriver();
    driver1.Navigate().GoToUrl(@"https://dzen.ru/");
    IWebElement element;
 
    Thread.Sleep(2000);
 
 
    // поиск по имени класса
    element = driver1.FindElement(By.ClassName("arrow__input mini-suggest__input"));//-
 
    // поиск по тэгу и атрибуту
    element = driver1.FindElement(By.XPath("//input[@name = 'text']"));//--

// поиск по CssSelector
     element = driver1.FindElement(By.CssSelector("input.arrow__input.mini-suggest__input")); //--

 
 
    element.SendKeys("новости");
 
    Thread.Sleep(1000);
 
 
}
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting
У них поиск реализован во фрейме, соответственно необходимо переключиться на этот фрейм и уже затем взаимодействовать внутри него с элементами. Не знаю как у Вас там на шарпее, но на python так:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()

try:
    driver.get('https://dzen.ru/')

    iframe = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "iframe.dzen-search-arrow-common__frame"))
    )

    driver.switch_to.frame(iframe)

    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "input.arrow__input.mini-suggest__input"))
    )

    print(element)  # <selenium.webdriver.remote.webelement.WebElement (session="5e3642980c7d8fcb1b687f3c9a716998", element="f.15CF8DCC914EA871801192FF570A26AF.d.A418C847E39359367688E91E0850A734.e.5")>

    element.send_keys("Найдено!")

    time.sleep(20)

finally:
    driver.quit()


660eae28c59d0142362756.png
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы