1. 程式人生 > >Selenium定位帶輸入框的下拉框

Selenium定位帶輸入框的下拉框

測試定位物件如下圖,點選右側向下按鍵,彈出下拉框列表,在輸入框中輸入字元可支援模糊查詢。

剛開始我的測試思路是完全按照手工操作用例設計

1.點擊向下按鍵

2.輸入稽核人名稱

3.選中列表中匹配的稽核人名稱

首先借助selenium ide進行以上步驟的錄製,結果發現ide壓根就不會產生任何步驟,所以這種方法行不通。

然後使用火狐瀏覽器的firebug檢視元素,分別獲取了向下按鍵,輸入框以及列表匹配元素的屬性值,轉換為自動化測試用例為:

1.driver.findElement(By.id("select2-drop-mask")).click();
2.driver.findElement(By.id("s2id_autogen3_search")).sendKeys("test12");
3.driver.findElement(By.xpath("//*[contains(text(),'test12')]")).click();
執行,總是提示找不到物件。

後面又分別換了定位元素的其他屬性,以及定位方式,無果,仍然提示找不到物件。

最後實在沒轍,使用firebug重新去看了下該下拉框的程式碼,發現其實這個下拉框的標籤也是select

 

而之前定位過不帶輸入框的下拉框元素,如下圖,這種下拉列表的標籤也為select,可以使用new select成功定位,並且使用selenium ide也可以錄製到相關步驟。

new Select(driver.findElement(By.id("id")).selectByVisibleText("已分配");

 

既然都使用的是同樣的select標籤,我就換了下思路,省去點擊向下按鍵,輸入稽核人名稱的操作步驟,直接對該select標籤元素進行操作。

new Select(driver.findElement(By.id("executorId")).selectByVisibleText("test12");

再次執行,竟然成功了。

總結:設計自動化用例時,思路不要被手工操作步驟所限制,如果按照手工操作步驟設計的用例無法成功定位元素時,可結合檢視操作元素的標籤或屬性,再據此選擇合適的自動化用例。