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


1.簡介

 從這篇文章開始,要介紹web自動化核心的內容,也是最困難的部分了,就是:定位元素,並去對定位到的元素進行一系列相關的操作。想要對元素進行操作,第一步,也是最重要的一步,就是要找到這個元素,如果連元素都定位不到,后續什么操作都是無用功,都是扯淡,因此宏哥建議小伙伴或者同學們從這里開始就要跟隨宏哥的腳步,一步一個腳印的將基礎打結實,不要到后期了要操作元素,到處找人問到處碰壁。在selenium中查找元素的接口是findElement接口了。findElement接口支持八種查找網頁元素的方法,相信看過宏哥寫的python版的selenium,都知道宏哥將其稱為8中元素定位大法。宏哥將按由簡入繁,從簡單到復雜順序一一介紹和分享給小伙伴們或者童鞋們。這篇文章就先介紹比較簡單方便的方法:By id。

2.自動化測試步驟 

宏哥認為的大致步驟:定位元素→操作元素→驗證操作結果→記錄測試結果。

在自動化測試過程中,測試程序通常的操作頁面元素步驟找到Web的頁面元素,並賦予到一個存儲對象中 (WebElement)對存儲頁面元素的對象進行操作,例如:點擊鏈接,在輸入框中輸入字符等,驗證頁面上的元素是否符合預期。

通過這三個步驟, 我們可以完成一個頁面元素的操作, 找到頁面元素是很重要的一個步驟。 找不到頁面元素,后面就沒法做了,Web頁面技術的現實復雜性, 造成大量的頁面元素很難定位。經常有人不知道怎么定位。

3.什么是定位?

宏哥這里說的定位和我們平時說的不一樣,Selenium能夠模擬用戶去瀏覽器頁面上執行對應(輸入,點擊,清除,提交)等操作,它是憑什么方式去尋找到頁面的元素?Selenium沒有視覺、聽覺等。Selenium通過在頁面上尋找元素位置,找到元素后,然后對元素進行相應的操作,Selenium尋找元素位置的方法,稱之為定位。

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

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

5.如何定位?

在使用selenium webdriver進行元素定位時,通常使用findElement或findElements方法結合By類返回元素句柄來定位元素

findElement() 方法返回一個元素, 如果沒有找到,會拋出一個異 NoElementFindException()

findElements()方法返回多個元素, 如果沒有找到,會返回空數組, 不會拋出異常

6.如何選擇定位方法?

策略是,選擇簡單,穩定的定位方法。當頁面元素有 id屬性的時候,盡量使用 id來定位。沒有的話,再選擇其他定位方法。cssSelector 執行速度快,推薦使用。
定位超鏈接的時候,可以考慮 linkText或 partialLinkText:但是要注意的是,文本經常發生改變,所以不推薦用。
xpath 功能最強悍。當時執行速度慢,因為需要查找整個DOM, 所以盡量少用。實在沒有辦法的時候,才使用 xpath。
這里,初學者可以根據下面的實例來一一了解如何進行元素的定位。

7.定位工具

定位的常用工具瀏覽器都自帶,如firefox有firebug、Chrome有“開發者工具”,說白了所有瀏覽器都可以通過F12進行定位的,只不過是通過工具會簡單一些。

8.工具使用

宏哥今天先講解一下,Chrome的工具定位,后邊會陸續講解IE和Firefox的定位,宏哥這里只講解三大瀏覽器,其他的這里不做說明和講解,有興趣的自己可以學習練習一下。

1. 打開谷歌瀏覽器,輸入百度地址,打開百度首頁,F12呼出開發者工具,如下圖所示:

2. 探測元素

點擊圖標

移動到指定的元素

9.定位方法講解

通過ID定位

例子:探測百度主頁輸入框

在藍色區域,查看到id=kw,則可以通過id去定位。

9.1代碼設計

1.新建一個PageLoadTest類,開始編寫腳本,如下圖所示:

9.2參考代碼

package lessons;

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

/**
 * @author 北京-宏哥
 *
 * 2021年7月13日
 */
public class PageLoadTest {
    
    public  static  void  main(String [] args) throws InterruptedException {
         
        System.setProperty("webdriver.gecko.driver", ".\\Tools\\chromedriver.exe"); //指定驅動路徑
 
        WebDriver driver = new ChromeDriver ();
        driver.get("http://wwww.baidu.com");
        
        //By id 定位
        WebElement wid = driver.findElement(By.id( "kw" ));
        wid.sendKeys("北京宏哥");
        driver.findElement(By.id( "su" )).click();
        //定位到文本,將文本高亮顯示
        //創建一個JavascriptExecutor對象
        JavascriptExecutor js =(JavascriptExecutor)driver;
 
        //新聞文本高亮顯示顏色
        js.executeScript ( "arguments[0].setAttribute('style', arguments[1]);",wid,"background: orange; border: 2px solid red;");
 
        Thread.sleep ( 2000 );
 
        driver.quit();
    }

}

9.3運行代碼

1.運行代碼,右鍵Run AS->java Application,控制台輸出,如下圖所示:

2.電腦端的瀏覽器,如下小視頻所示:

10.小結

 好了,今天到這里通過id定位就介紹完了,其實很簡單,就是找元素的id,一般來說id都是唯一的,當然了特殊的另說。一般都是絕大多數,特殊是個例,也就是我們常說的另類,感謝你耐心的閱讀。


免責聲明!

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



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