Java + selenium 元素定位(5)之By Xpath


        這篇關於Xpath方法的文章和之前那篇CSS的方法一樣,使用前,需要先掌握一些Xpath的相關知識。當然,網上也有各種工具可以幫助我們獲取到元素的Xpath,但是這並不代表着我們就可以不用了解Xpath的相關知識,畢竟依賴工具永遠沒有依賴自己來着靠譜。但是我也會介紹一下如果簡單快速的獲取元素的Xpath。

        我嘗試過使用一些文章介紹的快速獲取Xpath的工具,但是可能因為這些工具都是依賴於瀏覽器的擴展工具,更新換代比較快,所以文章介紹的工具我並沒有成功找到。我在這里要介紹的方法,不需要使用額外的工具。在之前的元素定位(1)中,我已經介紹過了使用瀏覽器的開發者工具來查看網頁的源碼,也獲取一些我們想要的元素標簽。本章關於Xpath的獲取,我們也是基於瀏覽器的開發者工具。根絕之前的步驟,我們點擊知道我們想要獲取的元素的代碼行。這時,我們將鼠標移動到該行代碼上,點擊鼠標右鍵,選擇Copy  -->  Copy Xpath。這樣我們就獲取到該元素的Xpath表達式了。我們只有到任何輸入框中選擇粘貼就可以看到Xpath表達式了。

       例如,我們那百度首頁舉例。還是首頁的輸入框,這波操作之后,我們可以獲取到輸入框的Xpath表達式://*[@id="kw"]。所以我們可以直接使用By.Xpath接口方法:driver.findElement(By.xpath(".//*[@id='kw']")).sendKeys("自動化")。完整代碼展示如下

import java.util.concurrent.TimeUnit;
 
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
 
public class FirstScript {
 
    public static void main(String[] args) {
        
         System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");  
         
         WebDriver driver = new ChromeDriver();  
            
         driver.manage().window().maximize();  
             
         driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);     
        
         driver.get("https://www.baidu.com");  
         
         driver.findElement(By.xpath(".//*[@id='kw']")).sendKeys("自動化");
         driver.findElement(By.xpath(".//*[@id='su']")).click();
           
         //關閉並退出瀏覽器  
         driver.quit();  
    }
 
}

       當然,機器獲取的Xpath其實都是很死板的,而我們在現實的運用中,因為不同的人的編寫習慣不同,其實死板的機器是很容易出問題的。所以我們最好還是靠自己來識別比較好。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM