использование Selenium WebDriver

Рейтинг: 0Ответов: 1Опубликовано: 09.02.2023

Есть следующая ситуация:

  1. веб-страница
  2. визуально(браузер) на странице одна форма: текстовые инпуты(имя; телефон; мыло), текстария для ввода сообщения, кнопка с сабмитом
  3. реально(после парсинга) на странице семь! форм, частично дублирующих друг друга, в числе с хайден инпутами и прочим
  4. на все элементы внутри формы есть id, name и все остальные атрибуты

Вопрос: может ли Selenium WebDriver (или какой другой вебдрайвер) указать(определить) на реальные инпуты(те что видно визуально), а не обманки. хаха или еще какие варианты?

Заранее спасибо за ответы по ЗАДАННЫМ вопросам

Ответы

▲ 0

Вы можете искать элементы по атрибутам или классам. Если на вашей "обманке" есть какой-то атрибут или класс, который отличает его не от "обманки" - это ваш ответ. Если "обманки" создаются динамически, то вам нужно будет имитировать действия пользователя для их появления, а потом уже искать по атрибутам, классам, Xpath.

Пример хоть и на C#, но он отображает суть:

   IWebDriver driver = new ChromeDriver();
                  
      driver.Url =  "https://ru.stackoverflow.com/questions/1494655/%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-selenium-webdriver/1494672#1494672"; //Веб-ресурс
      for (int k = 0; k < 30; k++)
      {
        IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
                        js.ExecuteScript("window.scrollTo(0, scrollY+350)");
                        Thread.Sleep(100);
                    
       } //Имитация скролла пользователя
    
       IList<IWebElement> element = 
driver.FindElements(By.XPath(//button[contains(@class,'js-vote-down-btn')])); //Xpath кнопки для голосования вниз
       for (int j = 0; j < element.Count; j++)
       {
             Console.WriteLine(element[i].GetAttribute("href"));
       } // Подсчет количества кнопок
             Console.WriteLine(element.Count + "Количество кнопок для голосования");  
//Вывод количества кнопок

По данной аналогии, вы можете добавить подсчет полей и требуемых вам других обьектов. В вашем случае, чтобы найти "обманки" input, нужно искать по атрибуту visibility: visible; или по классу display:none, и наоборот. Примерный XPath будет: //input[contains(@class,'display:none')]