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,但一定要連續的字才行,隨便從中間挑幾個字不連續那不行。英文也一樣,得是連續字母才行。你要是不信偏要以身試法,那就會報錯。