0126程式設計-SeleniumIDE-迴圈執行與變數
介紹與安裝
SeleniumIDE是一個網頁自動化工具,它可以自動記錄你在瀏覽器內的一切操作,一步步都錄製下來,並且可以自動重新播放,可以說就是我們瀏覽網站所有動作的錄影機。——這就實現了頁面的自動化,主要用來web開發測試。
Selenium官方網站 ,Selenium包含兩個工具,一個是今天我們要介紹的IDE,另外一個是Webdriver稍後我們介紹。
SeleniumIDE其實是一個瀏覽器外掛,你可以直接在谷歌Chrome瀏覽器應用商店安裝, 電腦上點這個連結 。

安裝成功之後瀏覽器右上角會出現一個新的圖示。

簡單使用
點選圖示開啟IDE視窗,第一次啟動你需要建立一個新專案create new project,輸入任意一個名稱PROJECT NAME比如 mytest
,然後輸入任意一個地址BASE URL比如 https://www.baidu.com
,然後Start Recording就會彈出一個瀏覽器視窗,IDE也會變為這樣。

左側為IDE,右側是被監控的視窗
預設這時已經開始記錄了,在IDE右上角錄影按鈕已經啟用。

這樣你就可以在右側瀏覽器視窗執行動作了,比如在輸入框輸入一些文字進行,然後點選搜尋按鈕,跳轉到新的頁面,這些動作都會被自動記錄到IDE的動作列表裡面去。

例如圖中紅色框出的一行就是一個動作,其中:
- Command命令type表示這是打字動作
- Target目標id=kw表示頁面上那個百度輸入框
- Value值是“人工智慧通識”表示我剛才打字的內容,就是搜尋內容
下面一行send keys表示下一動作,就是我點選了百度搜索按鈕。
我們點選一行動作,下面就會顯示這些詳情,並且提供了很方便修改的按鈕,比如點選下圖紅框按鈕就可以直接到右側瀏覽器視窗中點另外的連結或者按鈕,自動會改變Target,同樣也可以在這裡修改Value改變搜尋內容。

注意Target這個下拉選單,Target就是我們在瀏覽器中點選的元素,但是IDE是怎麼找到這個元素的呢?可以有很多種方法,比如在頁面上自動搜尋你點選的文字,或者搜尋這個元素的html標記名或者css樣式或者id屬性什麼的,你可以在這個下拉選單改變搜尋方法。

每條動作右側都有一個三點按鈕,點選可以執行刪除動作delete、增加動作insert等操作。

好了,如果你覺得可以了,那就點選右上角紅色閃爍按鈕暫停錄影,再儲存一下吧~ 然後點選播放按鈕開始自動重現你剛才的瀏覽器動作~

你將會看到右側瀏覽器自動開啟百度,自動輸入“人工智慧通識”,並進行搜尋,就像有人操作一樣。
迴圈執行
每次播放都只是執行一次,有沒有辦法執行多次呢?
先了解一下幾個特殊動作:

execute script
表示執行一個程式碼,Target就是要被執行的程式碼,return是輸出結果,Value是表示執行結果的變數。上面圖上這一條看上去挺複雜的動作其實就是 var counter=1

do
命令其實沒啥意思,但會把下面的命令都往右推一下,表示下面這些命令都要被它執行。

又是 execute script
,這次相當於 counter=counter+1
,這裡要用 ${}
把我們之前設定的變數括起來。

最後我們需要給 do
動作一個結尾, repeat if
方法就是判斷是否重複上面這些 do
動作,如果 if(counter<5)
就 repeat do
。
好了,有了這幾個動作,再次點選播放按鈕,就會看到動作被重複4次。
從頁面中提取文字
能不能把頁面上的文字作為var變數使用呢?
看一下這個圖:

store text
就是把頁面上某個元素的文字儲存為變數,在這裡insert插入了一個 store text
命令,目標Target使用按鈕直接從瀏覽器左上角點 換膚
連結文字,Value設定為 mytext
,這就相當於 var mytext=從瀏覽器中搜索css=.s-skin > .title這個元素得到的文字
。有了 mytext
我們就能在下面type打字動作中使用 ${mytext}
了。
執行一下,什麼結果呢?每次都是百度搜索“換膚”了。
動態變數
能不能每次搜尋不一樣的單詞呢?
看一下這個圖(紅色為新增,藍色為修改,綠色為調整位置):

- 使用
execute script
在開始建立names= ['周杰倫','趙麗穎','鹿晗','蜘蛛俠','孫悟空']
列表。 - 中間再增加
name=${names}[${counter}]
這句,因為在Type打字的Value內並不能計算方括號。 - 打字動作的Value改為
${name}${mytext}
,注意這裡不需要使用加號。
每個人的智慧新時代
如果您發現文章錯誤,請不吝留言指正;
如果您覺得有用,請點喜歡;
如果您覺得很有用,歡迎轉載~
END