一、找不到元素,腳本報「element not find」,或者定位到了,不能操做,點擊無效javascript
1) 首先查看本身的「屬性值」是否寫正確css
2) 元素的標籤不惟一,,默認找到第一個html
3) 向上查看,元素是否在frame框架中java
4) 在切換frame時沒注意:是父子關係仍是並列關係python
① 兩個frame是父子關係時:要進入第二個,須要一層一層的進入jquery
② 兩個frame是並列關係時:要進入第二個,直接進入第二個frame便可web
5) 查看元素是否在新打開的頁面中,須要切換到新窗口chrome
6) 添加等待時間瀏覽器
Wait until page contains element id:kw 30 error框架
Wait until element is visible id:kw 30 error
7) 換其它的定位方式:id/name/class/tag name/link/xpath/css/js/jquery
8) 檢查元素屬性是不是會變更的、是不是隱藏的
9) 查看標籤的屬性是否有「style=’display:none’->。元素不顯示。屬性改成block. 執行js將屬性修改成block
document.getElementById(‘title‘).style.display=’block’
10) 查看標籤的屬性是否有‘onclick=return false’->。取消點擊。屬性改位false
documet.getElementById(‘id’).style.display=’false’
11) 查看標籤屬性是否有readonly="true"屬性爲只讀,執行js修改屬性
documet.getElementById(‘id’).removeAttribute(‘readonly’)
二、使用RIDE運行腳本,第一次成功,第二次不顯示日誌
緣由:第一次運行打開瀏覽器操做後,驅動沒有關閉,
1) 新建一個「.bat」文件,
2) 內容輸入: taskkill /f /im chromedriver.exe
taskkill /f /im IEDriverServer.exe
3) 保存後,每次執行完腳本,執行便可
三、在瀏覽器中打開了新的窗口,切換到新的窗口
1) 只有兩個窗口時:
select window new ---切換到新窗口
select window main ---回到主窗口
四、要點擊的元素是連接
1) 使用: click link 新聞
click element link:新聞
五、遇到網頁有自動收縮菜單,不能定位到
緣由:像這種的收縮菜單,通常是用js或者jquery製做的,使用
Selenium2library中的定位方式不能使用,只能用js或jquery定位。
定位方法以下:
使用jquery定位:
Execute javascript 「$(‘#input’).click()」
jquery的定位有點像css的定位方式:
Id定位:」$(‘#user’).click()」
Class定位:」$(‘.user’).click()」
其餘定位:」$(‘input[type=text]’).click()」
六、RIDE輸出報告到指定文件夾
1) 在robot項目文件加下新建repot文件夾
2) 進入RIDE,點擊左側robot項目,進入右方的Run按鈕,在Arguments一欄中輸入「-d C:/robot/report」,前面是參數,後面是地址,從項目文件夾開始寫
七、Js和jquery輸入文本
js賦值: document.getElementById(‘id’).value=’hello’
Jquery賦值: $(‘#id’).val(‘text’)
八、js或者jquery定位
1) 使用js定位
execcute javascript window.document.getElementByID(‘kw’).click()
window.document.getElemenstByTagName(‘kw’)[0].click()
window.document.getElemenstByClassName(‘kw’)[0].click()
window.document.getElemenstByName(‘kw’)[0].click()
window.document.querySelctorAll(‘kw’)[0].click()
除過id是單個以外,其餘的定位都是獲得一個列表
js事件
.click() 點擊 .val(‘值’) 賦值
.scrollTop=1000 移動上下滾動條
.scrollLeft=100 移動左右滾動條
獲得文本
document.getElementById(‘id’).innerText
2) 使用jquery定位
execute javascript $(‘#user’).click() 有點象css定位
Jquery事件
.click() 點擊 .dblclick() 雙擊
.text() 獲得文本 .text(‘輸入’) 輸入文本
返回文本
${x} execute javascript return $(‘#id’).text()
九、使用js修改隱藏的元素屬性
1) 在表單中隱藏:type=’hidden’(把屬性改爲text)
documet.findElementByName(‘name’).prop(‘type’,’text’)
2) 在css中隱藏
Visibility:hidden
documet.getElementById(‘id’).style.visibility=’visible’
Opacity:0
documet.getElementById(‘id’).style.opacity=’1’
Position:absolute
documet.getElementById(‘id’).style.left=’-2000px’
Display:none
documet.getElementById(‘id’).style.display=’block’
3) 元素爲只讀readonly=’readonly’
documet.getElementById(‘id’).removeAttribute(‘readonly’)
十、腳本中產使用的關鍵字
Setting 引入包和關鍵字 Keywords 關鍵字製做
Testcases 測試用例集合 Variable 公共變量
[Arguments] 傳入的參數 [Return] 返回參數
Library 引入要用的包 Resource 引入定義的關鍵字
Evaluate 引入 python的模塊 [Tags] 標籤
Scalar 變量
十一、使用evaluate引入python的模塊
Evaluate os.system(‘c:/test/data/1.exe’) os
十二、讀取二維列表的方法
1) 使用列表來讀取
@{x}=[[‘a’,’b’],[‘c’,’d’]]
@{x[1]}[1]=d 或者 ${x[1][1]}=d 均可以
2) 使用變量來讀取
${y}=[[‘a’,’b’],[‘c’,’d’]]
${y[1][1]}=d
1三、學習xpath的三種很厲害的定位方法
1) Xpath=(「//input[starts-with(@src,’nice’)]」), 匹配src的屬性開始位置的關鍵字等於nice
2) Xpath=(「//input[ends-with(@id,’nice’)]」),匹配src屬性末尾位置爲nice
3) Xpath=(「//input[contains(@id,’nice’)]」),匹配src中包含字符串nice(推薦第三種,由於好多連接的開頭和末尾都相同,中間不一樣)
1四、運行提示unexpected error: 'pybot.bat' 不是內部或外部命令,也不是可運行的程序或批處理文件
系統環境變量沒有配置好,我由於新安裝了java8時候配置環境變量時侯多加了一個空格,致使不能使用(因此配置環境變量時必定要當心)
1五、獲得一組元素進行定位
@{x} get webelements id:su 首先獲得一個元素列表
click element @{x}[0] 其次再根據列表索引進行點擊
1六、操做滾動條
div中內嵌的滾動條
上下滾動:
Js滾動 Execute javascript
document.quarySelector(‘.class’).scrollTop=100000
Jquery滾動 $(‘#id’).scrollTop=100000
等於100000是最下面,等於0是最上邊
左右滾動:
document.quarySelector(‘.class’).scrollLeft=100000
Jquery滾動 $(‘#id’).scrollLeft=100000
正常的滾動條
上下滾動
Execute javascript document.documentElement.scrollTop=100000
Execute javascript window.sccrollTop(0,50)
Execute javascript document.body.scrollTop=100000
左右滾動
Execute javascript window.scrollLeft(0,50)
Execute javascript document.body.scrollLeft=100000
1七、出現錯誤「1 Argument requered,but only 0present」
要求的是一個參數,可是如今有0個參數,
解決:查看封裝的關鍵字出現問題,參數不對應,
1八、出現」message:unknow error:cannot read propety ‘click’ of undefind
緣由:元素沒有出現,進行點擊,會出現錯誤,元素沒有加載完成
在要操做的腳本前面添加一個等待時間便可
1九、用例失敗後自動退出驅動
封裝一個關鍵字:‘退出進程’
內容爲: evaluate os.system(r’taskkill /f /im IeDriver.exe’) os
evaluate os.system(r’taskkill /f /im chromedriver.exe’) os
接下類:在測試用例的Suite TearDown中引入關鍵字「退出進程」便可
20、Ride中經常使用關鍵字描述
Suit TearDown 用例集合結束後執行
Test TearDown 單個用例結束執行
Force Tags 強制標記,添加tags
Test Template 測試案例模板
Test Timeout 超時時間,結束執行
${x} set variable hello 定義變量
@{y} create list a b 定義列表
New user keyword 新建用戶關鍵字
| 分隔符:參數之間使用分隔符分開
必填參數在左邊,選填參數在右邊
list型的變量,只能放到參數的最後一位
Assign id to element 給對象指定一個id
2一、Click不能使用狀況
在ie中有時候會遇到點擊不了的對象,能夠試試下列語句
press key \\13
press key \\10
2二、u‘\\u4e2d\\u6587 或者 \\xd6\\xd0\\xce\\xc4中文處理
相似於:u’\\u4e2d\\u6587 或者 \\xd6\\xd0\\xce\\xc4
RIDE中默認的是unicode,直接可使用:
顯示中文:使用evaluate
第一種:${x1} evaluate ${x}
第二種:${y1} evaluate ‘${y}’.decode(‘gbk’)
第三種:${x} evaluare list(${x})[0]
2三、在3個以上的窗口任意切換
仍是和之前的unittest框架思想同樣,先把獲得的句柄列表轉換成集合再取集合的差集,
將差集轉換爲列表,最後返回列表值,進行跳轉
代碼以下:
1) ${h1} get window handles 每次打開新窗口,使用代碼先獲得全部的句柄列表,${h1} ,${h2},${h3},三個值對應的是打開第1,2,3個窗口後獲得的列表
2) 切換到第一個窗口:
select window main 便可
3) 切換到第二個窗口:
${z} evaluate list(set(${h2})-set(${h1}))
select window ${z[0]}
4) 切換到第三個窗口:
${z} evaluate list(set(${h3})-set(${h2}))
select window ${z[0]}
2四、獲得元素列表,在進行點擊
遇到有多個html標籤type=button或者列表的屬性同樣,用普通的定位
不能定位到,可使用:先獲得列表,在根據索引進行點擊
1) 好比頁面內有多個input標籤,按鈕,屬性都是type=button,要點擊第二個按鈕,
2) @{x} get webelements css:input[type=button]
經過定位獲得input按鈕集合
3) Click element @{x}[1]
點擊第二個按鈕(如需點擊其餘的按鈕,只需更改標黃的索引值便可)
2五、使用命令關閉全部的瀏覽器
封裝關鍵字
evaluate os.system(‘taskkill /f /im firefox.exe’) os
evaluate os.system(‘taskkill /f /im chrome.exe’) os
evaluate os.system(‘taskkill /f /im iexplore.exe’) os
2六、須要點擊隨機元素
1) @{x} get webelements id=kw 獲得全部id=kw的元素
2) ${y} evaluate random.randint(‘1,10’) random 獲得隨機數
3) Click element @{x}[${y}] 點擊隨機元素
2七、定位錯誤:Elementnot ninteractable exception:connot click on element
元素沒法點擊,個人是定位方式不同,使用css定位獲得元素列表,再點擊
或者換一種定位方式
2八、左側的收縮菜單欄點開後不能收縮
由於收縮欄的定位,在點開前和點開後是不同的,須要分別寫,從新點擊便可收縮,(我開始一直用的同樣的定位,因此老是不能點擊收縮)
2九、使用rf進行解壓文件
1) 首先把WinRAR的地址C:\Program Files\WinRAR添加環境變量path中
2) 建立關鍵字,進行調用
30、在rf中輸入中文,在python值出現錯誤
1、方法1:
① 在rf中輸入漢字:${x} set variable 測試
② 在evaluate中過濾:${y} evaluate r’${x}’
變成:\xe9\x99/這種‘gbk’格式的
③ 傳入python
2、方法2:
① 把漢字放到一個列表中,傳入python中直接用列表的索引,調用便可(測試可用)
3一、使用${CURDIR}獲得當前文件的路徑
1) 引入String模塊、使用replace string 去掉相同的字符,對新字符進行拼接
2) 當前文件是在c盤下,c:\\robot\\case\\OA\\001.robot
3) ${addr}= replace string ${CURDIR} case\\OA data
4) 輸出的值爲:c:\\robot\\data
3二、使用谷歌提示:element not attched to page document
1) 個人緣由是谷歌瀏覽器速度太快,在錯誤的腳本錢添增強制等待
Sleep(3)便可
2) 在網上搜到的的是:因爲頁面刷新後,須要從新定位元素
3三、使用evaluate調用Python中的os注意
注意:
地址必須是:左斜線、單斜線
名稱:不能使用中文,用英文
3四、錯誤element is not clickable at point解決方法
點擊報錯
使用Selenium時,觸發點擊事件,常常報以下異常:
Element is not clickable at point
緣由及解決方法
無外乎四種緣由
未加載
沒加載出來就等待元素加載出來,再往下執行。
在iframe裏
若是元素在iframe裏,在窗口裏找是找不到元素的,更是沒法點擊。因此,要切換到iframe裏去找元素。
不在視窗裏,須要拉滾動條
要點擊的元素被覆蓋
可使用事件鏈來解決
例以下拉菜單,經過hover,讓子菜單顯示,就能夠點擊了。