2016-03-04 136 views
1

我在尋找一個邏輯/代碼,它將在google.com中輸入文字selenium,並從搜索結果中獲取前10個網址列表,並從該列表中計算哪些網址以www.seleniumhq.org開頭。Selenium Java - 從google搜索獲取網址列表並獲取特定url文本的計數匹配

到目前爲止我的代碼能夠顯示前10個網址列表:

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); 
    } 
} 

任何幫助嗎?

回答

0

我不確定你在這個案例中使用split的那條線。但是,如果你的動機是先手以「www.seleniumhq.org」的URL的數量,我改變了你for循環,我能夠得到正確的計數:

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); 
+0

分割用於分隔從提取的url中取出所有的文本「www.seleniumhq.org」,以這樣的方式提供正確的計數,但輸出是增量形式的,因爲它通過for循環迭代,即第一次迭代0,然後是1等。有什麼辦法可以一次性打印計數?比如「整個網址與www.seleniumhq.org一致:3」? –

+0

您可以放置​​打印/在循環後使用大小。由於我們在這裏維護一個列表,爲了掃描所有循環是必要的。但一旦循環完成,你會得到計數,我想這就是你需要的。 – Prateek

+0

好吧,它有幫助...謝謝! –