標籤:跳轉 連結 str static 頁面 tps 分享圖片 img void
本章介紹的兩種方法都是對於網頁上的文字連結的定位操作。根據名字,我們就可以看出來,這兩者其實很相似,那麼他們的不同在哪裡呢。
By LinkText()方法,是對一個的網頁超連結,我們所需要輸入的關鍵字為該超連結的所有文字。
By PartialLinkText()方法,看到part這個單詞我們就可以知道,當這個文字超連結太長時,我們不想輸入那麼多的字,就可以調用這個方法,主要輸入屬於這個超連結顯示文字的部分就可以了。當然,為了防止因為文字出現位置太多,定位失敗,建議選擇的字元要有唯一性。
這裡接著使用百度首頁為例子,例子為圖中紅框內容,代碼展示如下:
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver; public class FindElement_LinkText { 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.get("https://www.baidu.com"); //By linkText 尋找元素 driver.findElement(By.linkText("新聞")).click(); Thread.sleep(1000);
//返回百度首頁
driver.navigate().back();
Thread.sleep(1000);
//By PartialLinkText 尋找元素 driver.findElement(By.partialLinkText("設為首頁")).click(); }}
代碼中出現的Thread.sleep(),是停頓的意思,括弧中的數字單位為ms。加上這段代碼是為了保證整個程式的可執行性。因為在實際操作做,經常出現代碼報錯,說定位不到元素。後來經過個方面的查證,發現不是元素定位錯了,而是因為在頁面跳轉的時候,可能載入速度比較慢,跟不上代碼執行速度,導致的元素定位失敗。所以在出現頁面跳轉或者轉變的時候,都建議在該行代碼下加一個Thread.sleep()操作,讓代碼等待頁面載入完成之後再執行,可以避免出現這種以為網頁載入慢導致的元素定位失敗錯誤。
Java + selenium 元素定位(2)之By LinkText/PartialLinkText