1. 程式人生 > >robotframework自動化系列:修改流程

robotframework自動化系列:修改流程

用例 但是 健壯性 pre 技術分享 字符 gen strings 響應


在上一小節中,新增流程操作已經完成。那麽接下來就是修改的流程操作了,對於一個頁面的修改如何操作呢?

針對修改修改操作是在一個已經存在的賬號直接修改還是新添加一個賬號再修改呢?從用例設計健壯性出發,我們先新增一個賬號,然後再修改這個賬號,這樣用例和用例之間的不會存在因果關系,不會因為不存在這個賬號而造成此修改用例失敗!

接下來就說明一下修改用例的思路:

  1. 新增一個賬號信息,新增後的操作要返回此新增賬號的賬號id
  2. 找到修改頁面的不變的url地址,把此url封裝成一個變量
  3. 根據第一步返回的賬號id和第二步查出的url兩者封裝成一個具體賬號的修改頁面的url
  4. 在瀏覽器中打開此修改頁面的url地址,頁面切換到此url中
  5. 定位修改頁面的元素,並封裝成關鍵字信息
  6. 根據新增賬號用例的測試點進行賬號修改用例的操作
  7. 斷言修改賬號成功

這裏需要註意兩點

  1. 賬號修改用例中,為了用例的健壯性,每次修改操作的時候,都會先新增賬號,所以這裏的新增賬號用例此處需要進行封裝

  2. 針對自動化中,頁面中出現的新增、修改等操作,能使用具體url的建議直接使用url打開新的頁面進行新增和修改的操作

這裏就是在進行web自動化中,如圖所示的一個展示頁面

技術分享
這裏頁面顯示的新增和修改操作,我們會想到有2種思路,一種思路是直接定位到該url頁面中,在頁面中,點擊新增按鈕,打開新增頁面進行用例的編寫;另外一種思路是直接找出新增頁面的url地址,然後定位到該url地址中,進行用例的編寫;這兩種思路都能夠實現新增賬號的操作,但是相對來說更推薦第二種操作方法,這樣如果頁面中的新增或修改按鈕的位置發生變化,我們不用再次去修改新增或修改按鈕的定位方法,相對來說提高了工作效率~ o( ̄▽ ̄

)ブ

因為修改賬號的用例中,我們每次操作都要新增賬號操作,這裏我們把之前的新增賬號中一個正常的用例封裝成關鍵字,(添加賬號有疑問的,可以參考 http://www.cnblogs.com/LOVEYU/p/7825173.html)

封裝的新增賬號關鍵字,如圖所示
技術分享

根據之前的修改思路,新增賬號已經完成,我們先看一下修改頁面具體的url,進行對比分析出url中不變的元素和變化的元素,具體的URL地址如圖所示
技術分享
通過url對比分析,確定前半部分 192.168.1.6/page/view/guardian/edit.html?id=是不變的元素,而後面的140則是根據新增賬號生成的不同的id號,那麽接下來就是找到新增賬號的id信息,我們先來看一下query頁面的源碼如圖

技術分享
截圖中,name="ids" value= "490"就是新增賬號產生的id號,接下來就是將這兩部分元素進行拼接,而robotframework中的Catenate關鍵字可以實現字符的拼接,具體代碼如下

封裝賬號新增id的url
${gradeU.value}    Get Element Attribute    xpath = .//*[@id=‘tb_guardian‘]/tbody/tr[1]/td[1]/input@value
log    ${gradeU.value}
${AccountModify}    Catenate    SEPARATOR=    ${GuardianEdit}    ${organid}    ${gradeU.value}
[Return]    ${AccountModify}

robotframework中關鍵字封裝如圖
技術分享
這樣修改賬號頁面的url我們已經找到,那麽接下來就是修改流程中的下面操作步驟

  1. 在瀏覽器中打開此修改頁面的url地址,頁面切換到此url中
  2. 定位修改頁面的元素,並封裝成關鍵字信息
  3. 根據新增賬號用例的測試點進行賬號修改用例的操作
  4. 斷言修改賬號成功

這裏修改頁面的元素定位和新增賬號頁面的元素定位是一致的,所以我們可以直接使用新增賬號頁面中的定位關鍵字進行操作。
代碼如下

賬號修改
[Documentation]    賬號信息修改;所有元素符合條件
...    用例目的
...    修改賬號信息,所有信息符合
...    斷言
...    1.頁面顯示正常
...    2.修改的賬號名稱顯示正常
[Setup]    login
賬號新增封裝
${GuardianAccEdit}    封裝賬號新增id的url
打開頁面    ${GuardianAccEdit}
#跳轉到新打開的窗口,否則會停留在新增之後的窗口,元素無法定位    #說明跳轉這裏使用的是第二次,無法成功,具體原因待查
goto    ${GuardianAccEdit}
Take Screenshot    guardian
${Accountame}=    gen chars    20
輸入用戶名    ${Accountame}
Comment    ${passwd}    gen nums    22
Comment    輸入密碼    ${passwd}
Comment    再次輸入密碼    ${passwd}
${phone}    Evaluate    random.choice([‘139‘,‘188‘,‘185‘,‘136‘,‘158‘,‘151‘])+"".join(random.choice("0123456789") for i in range(8))    random
手機號碼    ${phone}
郵箱    [email protected]
選擇用戶組
用戶所屬機構    機構養老一
部分數據權限
Take Screenshot    guardian
Execute Javascript    window.scrollTo(0, document.body.scrollHeight)    #滾動到底部
點擊賬號修改中的保存按鈕
Comment    Execute Javascript    window.scrollTo(0,0)    #滾動到頂部
sleep    10
#確認顯示信息
角色確認
sleep    10
Take Screenshot    guardian
Comment    ${mes}=    Confirm Action
Comment    sleep    10
Comment    Should Be Equal As Strings    ${mes}    保存成功!
Comment    確認保存
Comment    ${Auser}    get text    xpath=.//*[@id=‘tb_guardian‘]/tbody/tr[1]/td[2]    #後期po
#斷言當前頁面的url
Location Should Be    ${GuardianQuery}
${Auser}    賬號名稱檢查
Take Screenshot    guardian
Should Match    ${Auser}    ${Accountame}    
log    ${username}
[Teardown]    close

說明

  1. 因為修改頁面中的所屬機構是樹形結構展示,右側出現滾動條,必須滾動到底部才能點擊修改賬號頁面中的保存按鈕,所以這裏使用了js函數滾動到底部的操作,代碼如下Execute Javascript window.scrollTo(0, document.body.scrollHeight) #滾動到底部
  2. 對於自動化而言最我們經常遇到打開url的操作,有時候打開多個url,但是頁面定位元素的時候一直提示元素找不到,除了是因為頁面響應時間過短,元素沒有出現之後,還有一種可能就是定位元素的頁面url仍停留在上一個url的頁面中,這個時候我們需要用到切換url的操作,而robotframework框架中可以使用goto ${GuardianAccEdit}select window title= 賬號管理select window url=${organizationModify} #此方法也可以實現具體關鍵字的使用方法可以按F5,查找關鍵字的使用,如圖
    技術分享

而修改賬號中斷言有2點

  1. 頁面url跳轉正確
  2. 頁面顯示的賬號用戶名和修改的用戶名是一致的

到這裏修改賬號的正常的用例已經編寫完成(^o^)/~
接下來就是根據用例編寫其他修改賬號的用例嘍,這裏就不費筆墨了,展示一下賬號修改頁面的測試點和robotframework的用例截圖
技術分享
技術分享

robotframework自動化系列:修改流程