Как извлечь HTML элемента через SeleniumWebdriver? - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь написать Selenium Webdriver на Mac. Я пытался сделать так, чтобы он автоматически заполнял поисковый запрос Google и выполнял поиск. HTML-код для поля поиска следующий:

<input class="gLFyf" maxlength="2048" name="q" type="text" jsaction="paste:puy29d" aria-autocomplete="both" aria-haspopup="false" autocapitalize="off" autocomplete="off" autocorrect="off" role="combobox" spellcheck="false" title="Search" value="" aria-label="Search">

Итак, я хотел проверить, могу ли я выделить вышеуказанный элемент, который соответствует окну поиска. Поэтому я распечатал следующее, чтобы увидеть, получил ли он элемент:

driver.findElements(By.className("gLFyf")).toString

Однако вместо печати фактического HTML из вышеперечисленного, он напечатал

[[[ChromeDriver: chrome on MAC (a8470f41df7943e813ac6f77266ed33c)] -> class name: gLFyf]]

Может кто-нибудь объяснить мне, почему я не получаю элемент?

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Я не понял, что ты хочешь делать? Хотите проверить, что вы нашли нужный элемент?

Итак ..

Webelement element = driver.findElement...

выдаст исключение, если элемент не был найден.

Вы можете попробовать проверить количество элементов, найденных вашим локатором:

driver.findElements(By.className("gLFyf")).count

Возвращает 0, если ничего не найдено. Вы также можете сравнить его с 1, чтобы убедиться, что нет других элементов с таким же именем класса.

if(driver.findElements(By.className("gLFyf")).count > 1){
     //more than one lement found
}
0 голосов
/ 11 сентября 2018

В соответствии с вашим вопросом для печати html элемента Окно поиска на главной странице Google вы можете использовать следующее решение:

  • Кодовый блок:

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.firefox.FirefoxDriver;
    
    public class findElement_html {
    
        public static void main(String[] args) {
    
            System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
            WebDriver driver = new FirefoxDriver();
            driver.get("https://www.google.com/");
            WebElement myElement = driver.findElement(By.name("q"));
            System.out.println(myElement.getAttribute("outerHTML"));
        }
    }
    
  • Выход на консоль:

    <input class="gsfi lst-d-f" id="lst-ib" maxlength="2048" name="q" autocomplete="off" title="Search" value="" aria-label="Search" aria-haspopup="false" role="combobox" aria-autocomplete="list" style="border: medium none; padding: 0px; margin: 0px; height: auto; width: 100%; background: transparent url(&quot;data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D&quot;) repeat scroll 0% 0%; position: absolute; z-index: 6; left: 0px; outline: currentcolor none medium;" dir="ltr" spellcheck="false" type="text">
    
...