(二)robotframework自動化中遇到的錯誤及解決思路

一、找不到元素,腳本報「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,讓子菜單顯示,就能夠點擊了。

相關文章
相關標籤/搜索