Как найти автоматическое предложение в поиске Google с Xpath - PullRequest
0 голосов
/ 06 марта 2019

В веб-драйвере Selenium я пытаюсь найти «Selenium» в окне поиска Google, в котором автоматически отображаются несколько текстов. Затем я пытаюсь выбрать один конкретный текст из списка авто-предложений. Кажется, что мой Xpath не работает.

Ниже приведен код, который я написал:

package com.initial.selenium;
import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class GoogleSearch {

    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver",
            "C:\\Users\\Shahid\\eclipse-
    workspace\\InitialSeleniumProject\\chromedriver.exe");
    WebDriver driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.get("https://www.google.com");
        driver.findElement(By.xpath("//*[@name='q']")).sendKeys("selenium");
        List < WebElement >

            mylist=driver.findElements(By.xpath("//ul[@role='listbox']//li/descendant::div[@class='sbl1']/span"));
        System.out.println(mylist.size());
        for (int i = 0; i < mylist.size(); i++) {

            System.out.println(mylist.get(i).getText());
            if (mylist.get(i).getText().contains("Selenium Benefits")) {
                mylist.get(i).click();
                break;
            }

        }

    }

1 Ответ

0 голосов
/ 06 марта 2019

В этом случае вы получаете ошибку ( нулевой результат ), потому что элемент ul , на который вы нацеливаетесь , не содержит никаких элементов.

Image displaying that the target ul doesn't contain any children

Итак, в этом случае вы собираетесь сменить цель.Вместо того, чтобы делать:

ul[@role='listbox']

Делать

li[@role='presentation']

И это приведет к

//li[@role='presentation']/descendant::div[@class='sbl1']/span

, который возвращает диапазон, который вы пытаетесь получить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...