1、簡介javascript
Selenium是UI自動化的一個框架。css
Selenium1.0時代就是用js注入技術與瀏覽器交互。java
Selenium WebDriver就是調用瀏覽器原生的API來實現的操做。他是Client/server模式的。意思就是說咱們寫的命令通過Selenium的Server端捕獲,而後翻譯成瀏覽器能夠執行的操做,瀏覽器執行了以後的返回結果通過Server端翻譯返回給客戶端,這裏的客戶端其實就是咱們寫的代碼。linux
Selenium3.0,支持Edge瀏覽器,支持IE9以上等等,如今咱們仍是用的2.0。windows
支持多種操做系統windows、linux、os,支持多種瀏覽器火狐、IE、谷歌、Sarif等等。瀏覽器
Java是Oracle公司的。app
2、用法簡介框架
一、瀏覽器的操做ui
能夠經過driver.navegate對瀏覽器進行操做,好比back回退、forword前進、to到某一個url地址。url
還能夠直接操做driver.quit退出瀏覽器,driver.close關閉瀏覽器。
二、元素定位
元素定位主要有7種。id、name、class、tag、linktext、css、xpath。常常用的也就是id和css。css若是太複雜的話咱們能夠經過瀏覽器F12查看元素定位,獲得css路徑。
咱們獲得元素了以後就能夠對元素進行操做,好比sendkeys、gettext、getattribute等等。
還能夠對頁面進行截圖,這也是常常用的方法,當斷言失敗或者遇到異常的時候就截圖getScreenShot操做。
三、Actions
就是對瀏覽器進行的操做,好比鼠標、鍵盤的操做。鼠標操做有click、doubleclick、movetoelement移動、dtag拖拽等等操做。鍵盤能夠對輸入框輸入鍵盤上的key以模擬鍵盤操做。
四、JS
有的時候咱們會去執行javascript腳本。把driver轉成JavascriptExcecutor,而後經過這個對象執行ExcecuteScript腳本代碼。還能夠對js方法傳參數,好比咱們經過selenium框架獲得了某個元素,能夠經過arguments[0]這種方式操做元素,還能夠獲得方法的返回值,返回值經過string接受,而後再轉。
五、Switch
當咱們打開了幾個頁面或者頁面有iframe或者操做alert的時候須要先switch到相關的頁面或者iframe上才能操做元素。
當咱們操做alert的時候先switch.alert到彈出框上,而後再經過方法accept或者dismiss點擊肯定或者取消操做。
六、等待
等待是由於有的時候執行腳本的時候,元素尚未加載出來,咱們就經過等待等到元素加載出來在操做。等待分爲3種:
1)強制等待,就是經過java的Thread.Sleep等待。
2)隱士等待,就是經過對driver的設置,設置了以後,整個經過driver操做元素都會等待。
driver.manage().timeouts().implicitlyWait獲取元素的時間設置;還有pageLoadTimeout頁面加載的時間設置;setScriptTime腳本執行時間的設置。
3)顯示等待,上面兩種等待都有弊端,咱們通常都用顯示等待,就是須要等待的地方纔執行等待的操做。WebDriverWait對象,wait.until傳入要找元素的代碼,若是超時尚未找到異常,若是找到了繼續執行。
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement rElement = wait.until(new ExpectedCondition<WebElement>() {
public WebElement apply(WebDriver d) {
return d.findElement(By.cssSelector("input[type='radio'][name='company']:checked"));
}
});
七、斷言
Selenium提供了Assert、Verify斷言。Assert斷言失敗會中止執行;Verify斷言失敗繼續執行,可是會記錄日誌。