Selenium實戰技巧-多頁面和Windows控件處理

多頁面處理


做UI自動化的時候常常會遇到瀏覽器彈出新的Tab頁,或者需要在多個網頁服務之間來回取數據的情況。

比如在Testfan社區的首頁點擊文章“Jmeter使用?”的鏈接,瀏覽器會彈出一個新的頁面顯示“Jmeter使用?”這篇文章的詳情。此時如果用Selenium Webdriver去查找該頁面中的元素,會發現拋出空指針報錯。

這是因為Selenium Webdriver只能指向一個HTML頁面,而此時Webdriver仍然指向Testfan社區的首頁,只能查找到Testfan首頁的內容。

Selenium實戰技巧-多頁面和Windows控件處理

遇到這種情況我們需要用到句柄來處理不同頁面的切換。

在使用句柄以前,我們先了解它的基本概念,我們可以把通過Selenium WebDriver打開的每一個頁面都看做一個小球,每個小球有唯一的標識(這個標識就是句柄)。我們的手就相當於WebDriver,它通過獲取所有的小球,依次遍歷查看小球的詳情(比如Title)來判斷小球是不是我們要的頁面。如果是,則通過小球的唯一標識(句柄),把WebDriver指向到我們需要的網頁頁面,然後再進行元素處理。

Selenium實戰技巧-多頁面和Windows控件處理


Selenium WebDriver 句柄處理Api:

• driver.getwindowhandles() 獲取當前瀏覽器打開的所有頁面

• driver.getwindowhandle() 獲取當前“活躍”頁面

• driver.getTitle() 獲取當前“活躍”頁面的標題

• driver.switchTo().windows(handleName) 切換“活躍”頁面


通過上述Api,我們可以實現多頁面的切換和處理:

Selenium實戰技巧-多頁面和Windows控件處理

Windows控件

UI自動化中常常遇到上傳文件的場景,以百度圖片上傳為例,上傳是基於Windows的控件完成的(點擊上傳以後,會彈出Windows文件系統,讓你選擇Windows路徑下的文件)。

Selenium實戰技巧-多頁面和Windows控件處理

Selenium實戰技巧-多頁面和Windows控件處理

Selenium只能處理網頁元素,無法處理Windows控件,遇到這種情況我們可以基於JavaRobot來處理Windows的控件。JavaRobot類用於為測試自動化、自運行演示程序和其他需要控制鼠標和鍵盤的應用程序生成本機系統輸入事件,可以實現Windows的自動化測試。

JavaRobot常用API

Selenium實戰技巧-多頁面和Windows控件處理


以處理Windows彈窗選擇文件為例,當我們點擊網頁元素,出現Windows彈窗後,可按下述邏輯處理:

• 基於Tookit往剪貼板輸入文件路徑

• 使用JavaRobot Enter鍵將光標移動到輸入框

• 使用JavaRobot CTRL+C 鍵拷貝剪貼板中的內容

• 使用JavaRobot CTRL+V 粘貼內容到光標出

• 使用JavaRobot ENTER鍵 關閉Windows彈窗並上傳文件


Selenium實戰技巧-多頁面和Windows控件處理

作  者:Testfan Kitty出  處:微信公眾號:自動化軟件測試平臺版權說明:歡迎轉載,但必須註明出處,並在文章頁面明顯位置給出文章鏈接


分享到:


相關文章: