[轉]RF+Selenium2Library元素定位不到的問題


原文地址:http://m.blog.csdn.net/m0_37553368/article/details/78016729
在基於RobotFramework框架使用Selenium2Library庫對web系統做UI自動化時經常會遇到元素定位不到的問題,就我目前所遇到的情況,除元素本身定位有誤外,大致有5類問題導致元素定位不到,即休眠時間較短、未進入frame、未進行窗口跳轉、元素被隱藏、元素為只讀。其中,元素被隱藏的解決方法我有參考網上的資料,參考鏈接見正文。
 
1. 等待時間太短,頁面元素還沒加載出來,或者沒加載全。 ----------解決方案:加長等待時間
sleep    10
 
2. 元素在frame中,需要先進入該frame。有時一個頁面內部分元素變化需要先跳出該frame再進入另一個frame
*1*進入frame后頁面無變化 --------直接進入frame
*2*進入frame后頁面有變化,比如執行搜索后頁面展示的數據變化,對變化的數據進行操作
----需要先跳出該frame再進入另一個frame進行操作,有時候兩個frame名稱一樣,但仍須先跳出
*3*進入嵌套frame進行操作 ------先進入外層frame,再進入內層frame,如果有多級嵌套的話,需要一級一級地進入,不能越級
需要關鍵字
select frame    frame ID或具體locator
 
3. 窗口跳轉,在窗口“title1”執行一個操作后跳轉到窗口”title2“,對后者的元素進行操作時如果不在腳本里執行窗口跳轉的動作,就容易報元素找不到的問題。
需要關鍵字
select window    title2

 

4.元素被隱藏,對於元素屬性為hidden的情況,需要先執行JS,使元素可見,再對元素進行操作
元素隱藏的方式有:
*1*在css中隱藏:
類型 案例 執行JS
visibility: hidden img#dice
 { float: right;
 margin-left: 2em;
visibility: hidden; }
document.getElementById("EleId").style.visibility="visible";
opacity: 0 img#dice
 { float: right; 
margin-left: 2em; 
opacity: 0; }
document.findElementById('EleId').style.opacity='1'
position: absolute img#dice
 { position: absolute;
 left: -1000px; }
增加left的值,例如:
document.findElementById('EleId').style.left='-2000px'
display: none img#dice { display: none; } document.findElementById('123').style.display
*2*表單中隱藏,例如:
<input type="hidden" name="field_name" value="value">
解決方案:將type="hidden" 改為 type="text",詳見: http://blog.csdn.net/superit401/article/details/52094618

Execute Javascript    document.findElementByName('field_name').prop('type','text');
5.元素為只讀屬性。

 
比如上圖 入職時間輸入框,如果直接輸入,會報錯,這時將只讀屬性去掉即可,解決方案為,執行輸入操作前,先執行:
Execute Javascript    document.getElementById('d4311').removeAttribute('readonly')

 


免責聲明!

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



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