Selenium網頁自動化測試:如何讀取網頁上的連結?

Selenium網頁自動化測試:如何讀取網頁上的連結?

這篇文章主要說明網站自動化測試時,如何讀取網頁上的連結的幾種情況。

用 Selenium/Java 一個簡單程式實作示範。

如何讀取連結上的文字? 如何找到網頁上有特定關鍵字的聯結?

Selenium Links

 

程式說明

讓自動化程式預設等待 10秒.

為什麼要做預設等待的動作呢? 因為網頁的載入時間不一致。

因此這個等待十秒,當自動化程式所指定的網頁元件暫時找不到的時候,就會等待十秒,

如果十秒內可以找到,那麼程式就會繼續。

但是如果十秒後還是找不到該網頁元件,那麼程式就會出現異常。網頁元件找不到

 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

啟動瀏覽器

這段程式主要是啟動瀏覽器,並且直接到該網址。news.yahoo.com

driver.get(“https://news.yahoo.com/”);

這段程式是啟動瀏覽器之後,將視窗最大化。

視窗最大化主要是讓我們更容易觀察。並不會影響測試結果。

driver.manage().window().maximize();

其他程式說明,參見程式範例如下:

[pastacode lang=”java” message=”Handle links in Java/Selenium” highlight=”” provider=”manual”]

package mySelenium;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.WebDriverWait;


public class Links {

    public static void main(String[] args) {
    	//開啟 FireFox
        WebDriver driver = new FirefoxDriver();

        //預設等待時間十秒
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        
        //瀏覽至 news.yahoo.com
        driver.get("https://news.yahoo.com/");
        
        //將視窗最大化
        driver.manage().window().maximize();
        
        //選取Yahoo 最上方的 menu, News
        String text =driver.findElement(By.xpath(".//*[@id='yucs-top-news']/a")).getText();
        //列印出 news上面的連結文字
        System.out.println(text);
        
        //選取Yahoo 最上方的 menu, Weather
        text=driver.findElement(By.xpath(".//*[@id='yucs-top-weather']/a")).getText();
        //列印出連結文字
        System.out.println(text);

        
        //driver.findElement(By.linkText("Russian hackers behind $50 million IRS scheme, report says")).click();
        // 選取網頁中含有 Japan 的連結
        WebElement linkElement = driver.findElement(By.partialLinkText("Japan"));
        // 找到之後,將整個連結的文字內容印出
        System.out.print(" Here is the link text contains 'Japan': " + linkElement.getText());
        
        // Close the browser when it's done
        driver.close();
    }

}

[/pastacode]

 

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *