• Selenium Video Tutorials

Selenium WebDriver - 處理連結



Selenium Webdriver 可用於處理網頁上的連結。在HTML術語中,每個連結(稱為超連結)都由名為 anchor 的標籤名標識。此外,網頁上的每個連結都有一個名為 href 的屬性。

HTML 中連結的標識

現在讓我們討論一下如何識別網頁上顯示的超連結的錨標籤 - 下圖所示。右鍵單擊網頁,然後單擊 Chrome 瀏覽器中的“檢查”按鈕。之後,整個頁面的相應 HTML 程式碼將可見。要檢查頁面上的“Created”連結,請單擊下面突出顯示的左上箭頭。

Selenium Handling 1

單擊並指向“Created”超連結後,其 HTML 程式碼可見。

Selenium Handling 2

可以使用 Selenium 中的連結文字定位器來識別連結。將識別具有匹配連結文字值的第一個元素。

語法

Webdriver driver = new ChromeDriver();
driver.findElement(By.linkText("value of link text"));

使用連結文字定位器處理連結

讓我們以上面頁面為例,單擊“Created”連結後,頁面上將顯示文字Link has responded with status 201 and status text Created

Selenium Handling 3

示例

package org.example;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;

public class HandLinks {
   public static void main(String[] args) throws InterruptedException {

      // Initiate the Webdriver
      WebDriver driver = new ChromeDriver();
      
      // adding implicit wait of 15 secs
      driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);

      // Opening the webpage where we will identify an element
      driver.get
      ("https://tutorialspoint.tw/selenium/practice/links.php");

      // identify link with link text locator then click
      WebElement l = driver.findElement(By.linkText("Created"));
      l.click();
      
      // identify text locator
      WebElement t = driver.findElement(By.xpath("/html/body/main/div/div/div[2]/div[1]"));
      System.out.println("Text appeared is: " + t.getText());
      
      // Closing browser
      driver.quit();
   }
}

輸出

Text appeared is: Link has responded with status 201 and status text Created

Process finished with exit code 0

在上面的示例中,單擊連結Created後獲得的帶有訊息的文字為Link has responded with status 201 and status text Created

最後,收到訊息Process finished with exit code 0,表示程式碼已成功執行。

使用部分連結文字定位器處理連結

可以使用 Selenium 中的部分連結文字定位器來識別連結。將識別具有匹配部分連結文字值的第一個元素。

語法

Webdriver driver = new ChromeDriver();
driver.findElement(By.partialLinkText("value of partial link text"));

示例

package org.example;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;

public class HandPartialLinks {
   public static void main(String[] args) throws InterruptedException {

      // Initiate the Webdriver
      WebDriver driver = new ChromeDriver();
      
      // adding implicit wait of 15 secs
      driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
      
      // Opening the webpage where we will identify an element
      driver.get("https://tutorialspoint.tw/selenium/practice/links.php");
      
      // identify link with partial link text locator then click
      WebElement l = driver.findElement(By.partialLinkText("Creat"));
      l.click();
      // identify text locator
      WebElement t = driver.findElement(By.xpath("/html/body/main/div/div/div[2]/div[1]"));
      System.out.println("Text appeared is: " + t.getText());

      // Closing browser
      driver.quit();
   }
}

輸出

Text appeared is: Link has responded with status 201 and status text Created

在上面的示例中,單擊連結Created(使用部分連結文字)後獲得的帶有訊息的文字為連結Link has responded with status 201 and status text Created

使用標籤名定位器處理連結

可以使用 Selenium 中的標籤名定位器來識別連結。將識別具有匹配標籤名值的第一個元素。

在上例中,我們單擊並指向“Created”超連結後,其 HTML 程式碼可見,反映了錨標籤名(稱為“a”並用<>括起來)。

<a href="javascript:void(0);" id="created" onclick="shide('create')">Created</a>

語法

Webdriver driver = new ChromeDriver();
driver.findElement(By.tagName("a”)); 

讓我們以同一個頁面為例,我們首先計算連結的總數,然後單擊特定連結,例如“No Content”。單擊該連結後,我們將獲得文字Link has responded with status 204 and status text

Selenium Handling 4

示例

package org.example;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
import java.util.List;

public class TotalLinks {
   public static void main(String[] args) throws InterruptedException {

      // Initiate the Webdriver
      WebDriver driver = new ChromeDriver();

      // adding implicit wait of 15 secs
      driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);

      // Opening the webpage where we will identify an element
      driver.get("https://tutorialspoint.tw/selenium/practice/links.php");

      // identify link with link text locator then click
      WebElement l = driver.findElement(By.linkText("No Content"));
      l.click();
      
      // Retrieve all links using locator By.tagName and storing in List
      List<WebElement> totalLnks = driver.findElements(By.tagName("a") );
      System.out.println( "Total number of links: " + totalLnks.size() ) ;

      // Running loop through list of web elements
      for( int j = 0; j < totalLnks.size(); j ++){
         if( totalLnks.get(j).getText().equalsIgnoreCase("No Content") ) {
            totalLnks.get(j).click();
            WebElement t = driver.findElement(By.xpath("/html/body/main/div/div/div[2]/div[2]"));
            
            // get the browser title to confirm navigation after click
            System.out.println( "Get text after click: " + t.getText());
            break ;
         }
      }

      // Closing browser
      driver.quit();
   }
}

輸出

Total number of links: 42
Get text after click: Link has responded with status 204 and status text No Content

在上面的示例中,我們計算了網頁上鍊接的總數,並在控制檯中收到了訊息 - Total number of links: 42 和單擊後獲得的文字 Get text after click: Link has responded with status 204 and status text No Content

結論

本教程總結了 Selenium Webdriver 處理連結的全面內容。我們首先介紹瞭如何在 HTML 中識別連結,並透過示例說明了如何使用 Selenium Webdriver 中的連結文字、部分連結文字和標籤名定位器來處理連結。這使您掌握了 Selenium Webdriver 處理連結的深入知識。最好不斷練習所學內容,並探索與 Selenium 相關的其他內容,以加深您的理解並拓寬視野。

廣告
© . All rights reserved.