首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Xpath在google搜索上找到自动建议

如何使用Xpath在google搜索上找到自动建议
EN

Stack Overflow用户
提问于 2019-03-07 03:51:18
回答 2查看 904关注 0票数 0

使用Selenium webdriver,我尝试在谷歌搜索框中搜索“Selenium”,它提供了几个文本的自动建议。然后,我尝试从自动建议列表中单击一个特定的文本。但是,我的Xpath似乎无法工作。

下面是我写的代码:

代码语言:javascript
复制
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;
            }

        }

    }
EN

回答 2

Stack Overflow用户

发布于 2021-04-01 23:29:23

试试这个:

代码语言:javascript
复制
List<WebElement> options = new WebDriverWait(driver, 10).until(ExpectedConditions.numberOfElementsToBeMoreThan(By.xpath("//ul[@role='listbox']//li/descendant::span"), 0));

    System.out.println("no. of suggestions:"+options.size());
    
    for(int i=0;i<options.size();i++) {
        
        System.out.println(options.get(i).getText());
    }
票数 1
EN

Stack Overflow用户

发布于 2019-03-07 04:17:43

在本例中,您得到的错误(a null result)是因为您的目标的ul元素不包含任何元素。

因此,在这种情况下,您将更改目标。而不是做:

代码语言:javascript
复制
ul[@role='listbox']

代码语言:javascript
复制
li[@role='presentation']

这将导致

代码语言:javascript
复制
//li[@role='presentation']/descendant::div[@class='sbl1']/span

它返回您想要获取的跨度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55031150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档