《手把手教你》系列技巧篇(十三)-java+ selenium自動化測試-元素定位大法之By partial link text(詳細教程)

巨集哥發表於2021-08-02

1.簡介

 本文按計劃就要開始介紹partial link text,顧名思義是通過連結定位的(官方說法:超連結文字定位)。什麼是partial link text呢,看到part這個單詞我們就可以知道,當這個文字超連結太長時,我們不想輸入那麼多的字,就可以呼叫這個方法,主要輸入屬於這個超連結文字的部分就可以了。當然,為了防止因為文字出現位置太多,定位失敗,建議選擇的字元要有唯一性,不然會定位到其他地方,或者無法定位。

2.常用定位方法(8種)

(1)id
(2)name
(3)class name
(4)tag name
(5)link text
(6)partial link text(今天講解)
(7)xpath
(8)css selector

3.自動測試實戰

 昨天那篇文章是以奧運的排名為例,今天打算繼續以這個為例進行實戰。但是看到百度首頁變成“看奧運上百度,聚焦奪將時刻”是一個圖片,沒辦法只好換一個了。看看首頁剛好有個熱搜“打哭伊藤!孫穎莎:過癮”標題,那麼巨集哥就以這個為例。

3.1大致步驟

1.訪問度娘首頁。

2.通過partial linkText定位到“打哭伊藤!孫穎莎:過癮”,巨集哥這裡選擇“打哭”二字,點選一下。

3.2程式碼設計

3.3參考程式碼

package lessons;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

/**
 * @author 北京-巨集哥
 *
 * 2021年7月30日
 */
public class FindElement_PartialLinkText {
    
    public static void main(String[] args) throws Exception {  
        
        System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");  
           
        WebDriver driver = new ChromeDriver();  
     
        driver.manage().window().maximize();  
       
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
          
        driver.get("https://www.baidu.com");  
        
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
        
        driver.findElement(By.partialLinkText("打哭")).click();
        
        //判斷開啟頁面是不是奧運獎牌榜 最新排名,這裡用url作為驗證
          assert driver.getCurrentUrl() == "https://www.baidu.com/s?cl=3&tn=baidutop10&fr=top1000&wd=%E6%89%93%E5%93%AD%E4%BC%8A%E8%97%A4%21%E5%AD%99%E9%A2%96%E8%8E%8E%3A%E8%BF%87%E7%98%BE&rsv_idx=2&rsv_dl=fyb_n_homepage&hisfilter=1";
              
          System.out.println("斷言通過!");
        
        driver.close();
      
    }

}

3.4執行程式碼

1.執行程式碼,右鍵Run AS->java Application,控制檯輸出,如下圖所示:

2.執行程式碼後電腦端的瀏覽器的動作,如下小視訊所示:

4.小結

1.link_text 和 partial_link_text區別:link_text 是超連結載體的精確匹配,而partial_link_text是對超連結載體的模糊匹配
2.使用時這個超連結載體必須是唯一的。
3.在網頁上可通過Ctrl+F來查詢關鍵字檢視連結載體是否唯一。
4.linkText也是遵循“匹配第一個”的原則,同一網頁多次出現的話找第一個。

好了,到此關於partial linkText定位(模糊匹配)也介紹完了,感謝你耐心的閱讀。

5.擴充

因為partial linkText定位(模糊匹配),因為巨集哥為了驗證猜測,就將“打哭伊藤!孫穎莎:過癮”中間的文字去掉了,就剩下“打哭過癮”大家猜猜執行程式碼還能定位到元素進行點選跳轉新頁面嗎,答案:就是不能。

5.1執行程式碼

1.執行程式碼,右鍵Run AS->java Application,控制檯輸出,如下圖所示:

2.執行程式碼後電腦端的瀏覽器的動作,如下小視訊所示:

從控制檯我們可以看出已經報錯了(Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"partial link text","selector":"打哭過癮"}),從視訊中可以看到進入百度以後,就沒有進入打哭的頁面。

出現這種情況的原因是:partial link Text是超連結文字模糊匹配,雖然說是partial,但一定要連續的字才行,隨便從中間挑幾個字不連續那不行。英文也一樣,得是連續字母才行。你要是不信偏要以身試法,那就會報錯。

相關文章