RobotFramework測試問題二:各種元素不能定位問題


各種元素不能定位問題

一、元素定位

A. Click Element + xpath 
B. Click Element + contains 
C. Execute Javascript + getElementsById 
D. Jquery 
E. Execute Javascript + getElementsByClassName

二、用例:修改用戶信息

  1. 登錄
  2. 點擊用戶的“基本資料”
  3. 修改用戶信息
  4. 確定
  5. 檢測結果

這里寫圖片描述

預期測試用例

這里寫圖片描述

實際測試用例

這里寫圖片描述

三、各種元素不能定位問題

這里寫圖片描述

A. 昵稱元素:id vs. xpath 
沒有提供 id 元素,改用 xpath 相對路徑定位(使用相對路徑,即使上層節點改變也不會受到影響。例如,父節點或者祖父節點改變)。 
絕對路徑:/html/body/form/div[3]/div[2]/div[2]/div/div[2]/ul/li[1]/input 
相對路徑://ul[@class=’user-imfor-bar’]/li/input

Input Text  xpath=//ul[@class='user-imfor-bar']/li/input Allan
  • 1

B. 性別元素:Select Radio Button vs. Click Element 
觀察頁面設計,性別元素是個 Radio。但是,在使用 Select Radio Button 時,並沒有生效。嘗試用 xpath 的相對路徑去定位,也失效。最后,嘗試用 contains 方法,成功。

Click Element   xpath=//*[@id="sexchange"]/label[contains(text(), '男')] #性別 Click Element xpath=//*[@id="sexchange"]/label[2][contains(text(), '女')] #性別
  • 1
  • 2

C. 生日元素:Select From List By Value vs. (Click Element & Execute Javascript) 
觀察頁面設計,生日元素是個 List。但是,在使用 Select From List By Value 時,並沒有生效。

這里寫圖片描述

網頁源代碼中,並沒有提供 locator & value 和 locator & index 的方式定位。而是將兩者分開。

這里寫圖片描述

所以,改為 Click Element 定位。分兩步走:先點擊下拉欄,再選擇年月。

Click Element   selectpick_span_select_year #年 sleep 3 Click Element xpath=//ul[@class='user-imfor-bar']/li[3]/div[1]/div/div[2]/ul/li[10] sleep 3 
  • 1
  • 2
  • 3
  • 4

下面就有點讓人抓狂了,T T! 
在選擇下拉日期的時候,定位不到元素 id=selectpick_span_select_day。

Click Element   selectpick_span_select_day  #日 sleep 3 
  • 1
  • 2

還好提供了 id,嘗試用 Execute Javascript 的 getElementsById 方法定位,成功。

Execute Javascript  document.getElementById('selectpick_select_day').click() #日
  • 1

在選擇日期的時候,報錯:Element  is not clickable at point。

FAIL    WebDriverException: Message: unknown error: Element <label>...</label> is not clickable at point (1194, 949). Other element would receive the click: <li style="font-size:13px;height:42px; line-height:42px;">...</li>
  • 1

應該是元素被覆蓋,只能調整策略,使用 contains 方法。

Click Element   xpath=//ul[@class='selectpick_ul_select_day']/li/label[2][contains(text(), '15')] #15為日期 # 也可以使用傳參方式 ${date} Set Variable 15 Click Element xpath=//ul[@class='selectpick_ul_select_day']/li/label[2][contains(text(), '${date}')]
  • 1
  • 2
  • 3
  • 4

D. 點擊確定元素: Click Element + jquery 
沒有提供 id,也無法 xpath 定位。

Click Element   dom=$("input[class='percenter-content-input']") #確定
  • 1

四、用例:立即學習

  1. 登錄,搜索課程
  2. 進入“課程詳情”
  3. 點擊“課程大綱”
  4. 隨機點擊“立即學習”
  5. 進入“學習課程”

這里寫圖片描述

E. 立即學習元素:Execute Javascript +getElementsByClassName 
立即學習元素是隱藏元素,定位不到。xpath 方法的相對和絕對路徑都無法定位。

Click Element   xpath=//div[@class="cacc-kcdg-box"]/div[2]/ul/li[${index}]/a/div
  • 1

需要隨機點擊“立即學習,但是 Execute Javascript 沒有提供 getElementByXpath 方法。嘗試 getElementsByClassName 方法。

${index}   Evaluate    random.randint(0, 10) random #產生課程隨機數 Execute Javascript document.getElementsByClassName('caccb-kcdg-play')[${index}].childNodes[0].click();
  • 1
  • 2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM