1. 程式人生 > >Java+Selenium3方法篇5-findElement之By id

Java+Selenium3方法篇5-findElement之By id

       前面文章介紹了一些driver操作瀏覽器設定的一些介面,其中接口裡面的一些方法,我們經常用到。現在開始介紹一些和元素相關的介面或者方法,web自動化測試的核心就是找到網頁元素,並相應去操作元素。所以,我們接下來很大的文章篇幅都和元素查詢和元素操作有關。要操作元素,先要找到元素,Selenium中findElement介面能支援八種方法去查詢網頁元素,今天這裡,介紹By id的方法。

       在開始介紹By id之前,我先提下,如何去查詢findElement介面的原始碼,前面有一篇文章介紹了Eclipse上如何檢視Selenium原始碼。其實前面文章介紹不夠完整,只是介紹瞭如何檢視Selenium相關介面或者方法的宣告,更多的是介面文件形式,讀了之後,你可以知道哪些方法有哪些作用。如果要看真正的java原始碼,今天這篇文章就可以滿足你的要求。

1. 如何檢視某一個介面的實現程式碼。

在測試程式碼中的driver.findElement,通過前面介紹的方法,進入到WebDriver.java這個檔案,搜尋找到 findElement()這個介面,然後按照如下圖的方法進入實現程式碼的檔案。

接下來,點選RemoteWebDriver

進入如下圖

如果你還想看看By這個類如何實現的,你繼續Ctrl,然後滑鼠懸停在By 這個單詞,選擇進入原始碼。

這裡我們選擇檢視ById這個方法。

       這段程式碼意思是:方法返回是WebElement型別,引數context是SearchContext類的一個例項。現判斷,如果引數是 FindsById的一個例項,那麼就呼叫FindsById裡面的方法去返回這個WebElement,如果if裡面表示式為False,那麼這裡就呼叫XPath裡面的@id的方法去找元素,並返回這個WebElement。XPaht的相關知識,後面會介紹。如果你還想看findElementById(id)的方法,你按照上面的方法繼續去查詢相關原始碼。

       回到findElement這個介面,裡面的各種找元素的方法,返回的都是一個列表,元素就儲存在這個列表裡。driver這個瀏覽器例項物件呼叫了findElement方法,就把元素返回給driver這個例項,然後才可以去操作元素。關於如何查詢元素的id和XPath,我推薦你去看一下我之前寫過的一篇文章,點選這裡。簡單來說,就是在火狐瀏覽器上,先安裝firebug外掛,然後安裝firepath外掛,就可以了。我們這裡用百度首頁,搜尋輸入框定位來介紹如何查詢這個元素的id,直接看圖。

上面紅圈的kw就是百度首頁文字輸入框對應元素的id。

用Java來寫這個元素查詢並輸入關鍵字“Java”的指令碼如下。

package lessons;


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


public class PageLoadTest {
	
public static void main(String[] args) {
		
		System.setProperty("webdriver.gecko.driver", ".\\Tools\\chromedriver.exe");
		
		WebDriver driver = new ChromeDriver();
		
		driver.get("https://www.baidu.com");
	
		//By id 查詢元素
		driver.findElement(By.id("kw")).sendKeys("Java");
		
	}

}
       執行一下,觀察效果。上面指令碼中的sendKeys()方法,我們再後邊文章會介紹,如果網頁元素是一個可以輸入的文字框,就可以呼叫這個方法去實現,把你想要輸入的字串輸入到該文字框內。

關於findElement()中的By.id方式就介紹到這裡,下一篇介紹By.XPath