java
  • list
  • selenium
  • selenium-webdriver
  • pagination
  • 2016-11-30 41 views 2 likes 
    2

    我有一個WebElements列表,我需要提取並添加到HashMap的結果頁面。通過Selenium的分頁導航添加項目到HashMap

    網頁上有分頁,如下所示:1,2,3,4,5,Next。這些都是鏈接,點擊Next後,它將導航到頁面2並在分頁上顯示6,同時刪除1,依此類推。

    List<WebElement> pagination = driver.findElements(By.xpath("//div[@class='pagination-container']//a")); 
         int s = pagination.size(); 
         for(int i=0;i<=s;i++){ 
          this.getAuthors(); 
           driver.get(Constants.url); 
           Thread.sleep(5000); 
    
          pagination = driver.findElements(By.xpath("//div[@class='pagination-container']//a")); 
          pagination.get(i).click(); 
          Thread.sleep(5000); 
         } 
    

    getAuthors()方法遍歷頁面上的必要元素並將它們添加到HashMap中。因此,它將遍歷分頁列表中的所有頁面,直到完成。它會回到保存爲Constants.url的頁面1。

    它進入第5頁後又卡住了,我不知道如何在6,7,8的其他例子中編碼,每次點擊下一步按鈕訪問它們,並將它們添加到分頁列表中。

    注意:Thread.sleep方法用於啓用頁面時間來加載頁面上的所有元素。

    任何想法?

    +0

    你爲什麼不設置一個while循環,它只是不斷點擊「下一步」按鈕?在每個循環中,爲每個頁面執行所有處理。要從循環中斷,請檢查是否顯示「下一步」按鈕。 – Grasshopper

    回答

    2

    你可以做這樣的事情,假設該鏈接是<a> html元素,你需要

    1創建Web元素,例如<a>元素driver.findElements(By.tagName("a"))

    2迭代列表從最後一步檢索到的列表並檢查您需要點擊的特定鏈接的某些元信息,例如標題elements.get(i).getAttribute("title");

    3如果標題是您需要的標題,請進行比較if (title.equals("Next Page")) {

    3發送點擊信號

    下面的代碼片段

    new WebDriverWait(
          driver, TIME_TO_WAIT).until(
            ExpectedConditions.presenceOfElementLocated(
              By.tagName("a"))); 
    List<WebElement> elements = driver.findElements(By.tagName("a")); 
    for (int i = 0; i < elements.size(); i++) { 
        String title = elements.get(i).getAttribute("title"); 
        if (title.equals("Next Page")) { 
         elements.get(i).click(); 
         break; 
        } 
    } 
    
    +0

    非常好,非常感謝! – Nazrod12

    相關問題