Selenium webdriver Selenium Java—从google搜索中获取url列表,并对特定url文本进行计数匹配

Selenium webdriver Selenium Java—从google搜索中获取url列表,并对特定url文本进行计数匹配,selenium-webdriver,Selenium Webdriver,我正在寻找一个逻辑/代码,它将在google.com中输入文本selenium,并从搜索结果中获取前10个URL列表,并从该列表中计算以www.seleniumhq.org开头的URL 到目前为止,我的代码能够显示前10个URL列表: public static WebDriver driver; public static void main(String[] args) throws InterruptedException { driver = new FirefoxDriver

我正在寻找一个逻辑/代码,它将在google.com中输入文本selenium,并从搜索结果中获取前10个URL列表,并从该列表中计算以www.seleniumhq.org开头的URL

到目前为止,我的代码能够显示前10个URL列表:

public static WebDriver driver;

public static void main(String[] args) throws InterruptedException {
    driver = new FirefoxDriver();
    String url = "https://google.com";
    driver.get(url);
    WebElement find = driver.findElement(By.id("lst-ib"));
    find.sendKeys("Selenium");
    Thread.sleep(2000);
    WebElement click = driver.findElement(By.name("btnG"));
    click.click();
    Thread.sleep(2000);
    List<WebElement> listings = driver.findElements(By.tagName("div").xpath("//cite[@class='_Rm']"));
    listings.size();
    System.out.println("Fetched URL's are as follows:-");

    for (WebElement loop : listings) {
        System.out.println(loop.getText());

        String filtering=loop.getText();
        boolean filtered=filtering.startsWith("www.seleniumhq.org/");

        int size1 = filtering.split("www.seleniumhq.org").length-1;

        System.out.println(size1);
    }
}
公共静态WebDriver;
公共静态void main(字符串[]args)引发InterruptedException{
驱动程序=新的FirefoxDriver();
字符串url=”https://google.com";
获取(url);
WebElement find=driver.findElement(By.id(“lst-ib”);
find.sendKeys(“Selenium”);
《睡眠》(2000年);
WebElement click=driver.findElement(By.name(“btnG”);
点击。点击();
《睡眠》(2000年);
列表列表=driver.findElements(按.tagName(“div”).xpath(//cite[@class='''u Rm']);
listings.size();
System.out.println(“获取的URL如下:-”);
for(WebElement循环:列表){
System.out.println(loop.getText());
字符串筛选=loop.getText();
布尔过滤=filtering.startsWith(“www.seleniumhq.org/”;
int size1=filtering.split(“www.seleniumhq.org”).length-1;
系统输出打印LN(尺寸1);
}
}

有什么帮助吗?

我不确定在这种情况下,您使用的是
split
,您在这一行中尝试了什么。但是,如果您的动机是只获取以“www.seleniumhq.org”开头的URL数量,那么我将您的
循环更改为
,并且我能够获得正确的计数:

    int size1 = 0;
    for (WebElement loop : listings) {

        System.out.println(loop.getText());

        String filtering=loop.getText();
        if(filtering.startsWith("www.seleniumhq.org"))
            size1++;
    }
    System.out.println("Total count : "+size1);

在这种情况下,我不确定您在使用
split
的那一行中尝试了什么。但是,如果您的动机是只获取以“www.seleniumhq.org”开头的URL数量,那么我将您的
循环更改为
,并且我能够获得正确的计数:

    int size1 = 0;
    for (WebElement loop : listings) {

        System.out.println(loop.getText());

        String filtering=loop.getText();
        if(filtering.startsWith("www.seleniumhq.org"))
            size1++;
    }
    System.out.println("Total count : "+size1);

拆分用于将所有文本“www.seleniumhq.org”从获取的url中分离出来,这样也可以按照您建议的方式给出正确的计数,但输出是增量形式的,因为它会在for循环中迭代,即第一次迭代时,它将是0,然后是1,等等。是否有任何方法可以一次性打印计数?如“www.seleniumhq.org的总url地址为:3”?您可以在循环后打印/使用大小。因为我们在这里维护一个列表,为了扫描所有内容,循环是必要的。但一旦循环完成,您将获得计数,我想这就是您所需要的。拆分用于分离所有文本“www.seleniumhq.org”从获取的url中,以您建议的方式给出正确的计数,但输出是增量形式的,因为它在for循环中迭代,即第一次迭代为0,然后为1,等等。是否有任何方法可以一次性打印计数?如“www.seleniumhq.org的总url地址为:3”?您可以在循环后打印/使用大小。因为我们在这里维护一个列表,为了扫描所有内容,循环是必要的。但一旦循环完成,您将获得计数,我想这就是您所需要的。