如何自动执行Google主页自动建议? [英] How to automate Google Home Page auto suggestion?

查看:98
本文介绍了如何自动执行Google主页自动建议?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的测试类,包含所有代码行.我认为问题出在xpath中,因为它找不到元素.

This is my test class with all the lines of code. I think the issue is in the xpath because of that it is not able to find the elements.

package practice;

import java.util.List;

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

public class selPractice {

public static void main(String[] args) throws InterruptedException
{
    String key="webdriver.chrome.driver";
    String value="./software/chromedriver.exe";
    System.setProperty(key, value);
    WebDriver driver=new ChromeDriver();
    driver.get("https://www.google.com");
    //to automate auto suggestion 

driver.findElement(By.xpath("//input[@title='Search']")).sendKeys("motogp");
List<WebElement>motolist=driver.findElements(By.xpath("//ul[@role='listbox]
//li/descendant::div[@class='sbl1']"));
    Thread.sleep(2000);

    int count=motolist.size();
    System.out.println(count);
    for(WebElement list:motolist)
    {
        String text=list.getText();
        System.out.println(text);
    }
}
}

推荐答案

要从搜索框中提取自动建议 www.google.com/"rel =" nofollow noreferrer> Google主页,您必须为 visibilityOfAllElements 引入 WebDriverWait ,并且可以使用以下解决方案:

To extract the Auto Suggestions from the Search Box on Google Home Page you have to induce WebDriverWait for the visibilityOfAllElements and you can use the following solution:

  • 代码块:

  • Code Block:

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;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class Google_Auto_Suggestions {

    public static void main(String[] args) {

        System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
        ChromeOptions options = new ChromeOptions();
        options.addArguments("start-maximized");
        options.addArguments("disable-infobars"); 
        options.addArguments("--disable-extensions"); 
        WebDriver driver = new ChromeDriver(options);
        driver.get("http://www.google.com");
        new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.name("q"))).sendKeys("motogp");
        List<WebElement> motolist = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//form[@action='/search' and @role='search']//ul[@role='listbox']//li//span")));
        for(WebElement list:motolist)
        {
            String text=list.getText();
            System.out.println(text);
        }
    }
}

  • 控制台输出:

  • Console Output:

    Only local connections are allowed.
    Dec 04, 2018 6:14:51 PM org.openqa.selenium.remote.ProtocolHandshake createSession
    INFO: Detected dialect: OSS
    motogp
    motogp 2018
    motogp live
    motogp results
    motogp game
    motogp news
    motogp bikes
    motogp race
    motogp wiki
    motogp schedule
    

  • 浏览器快照:

  • Browser Snapshot:

    在这里您可以在 查看全文

  • 登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆