天天看點

selenium常見的疑問和問題

.确認(verifation)和斷言(assert)有什麼差別?

  确認:當測試中的一個用例存在錯誤時,系統将會繼續運作這些測試

  斷言:當測試中的一個用例存在錯誤時,系統将會退出目前用例

  總而言之,确認和斷言的不同在于,當出現錯誤情況之後,系統将會如何處理。

.test case 和 test suite的差別?

  test case是一個用例

  test suite是一組用例

7.selenium IDE, selenium core, selenium core hta, selenium rc四者的概念以及它們之間的差別?

  selenium IDE(內建開發環境)。它是一個firefox的插件,可以錄制、回放并編輯測試腳本

  selenium Core(核心)。這是符合斷言機制,由測試套件執行的平台。它是整個測試機制的核心部分,由純javaScript代碼組成

  selenium Core Hta.這是針對IE設計的執行平台,運作于IE的最高字全級别之上。

  selenium Remote Control(遠端控制):它是一個代理與控制端,可代替selenium core/selenium DIE的用戶端,并支援多語言

8.能不能在IE中錄制腳本嗎?

  不能,隻能在firefox中安裝selenium IDE,而隻有selenium IDE才存在錄制的功能。

  如果想測試一些,不能在firefox中正常顯示的程式,則隻有安裝selenium RC,然後自己編寫測試腳本,隻有這樣,腳本才能在ie中運作。

12.怎樣安裝多視窗模型?

   (1)啟動selenium-server時,輸入以下的指令:java -jar selenium-server.jar -multiwindow。則會在兩個視窗中顯示運作結果

   (2)啟動selenium-server時,輸入以下的指令:java -jar selenium-server.jar -singlewindow。則會在一個視窗中顯示運作結果

15.怎樣通路變量?

  ${變量名}

16.在錄制的過程中,遇到了提示框的話,要怎樣處理才能在正常的回放?

17.錄制到郵件的時候,不能正常錄制,要如何處理呢?

  錄制的時候,首先要指定要架構,然後再輸入文本。

  例如:郵件通過firebug定位為:

    在selenium ide中則需要手動的輸入以下的内容:

  再輸入一條以下的指令:selectFrame  relative=top

  則,此時的腳本就能正常的運作了。

18.錄制到元件的時候,不能正常錄制,要怎樣處理?

   例如:上傳附件(以及其它一些要上傳的東西),剛發現附件并不是不能錄制,而是你在界面中的定位不是很清楚,selenium不能識别。

19.錄制時,會跳出多個視窗,此時要怎樣處理?

   存在四種解決方法,可以參考http://www.boobooke.com/bbs/viewthread.php?tid=41824&highlight=selenium中的第七集

   具體方法如下:(1)java中可用如下的代碼:String[] titles =selenium.getAllWindowTitles();               //得到所有視窗的标題

        selenium.selectWindow("title="+titles[titles.length-1]);   //選擇最後打開的一個視窗

        selenium.close();                                               //關閉最後打開的一個視窗  

        selenium.selectWindow("null");                            //重新聚集在最開始的一個視窗(隻有兩個視窗的時候) 

   (2)java中可用如下的代碼:selenium.click("link=????"); 換成如下的兩行代碼

            String url = selenium.getAttribute("link=????@href");

             selenium.open(url);

                         注:此方法也存在一定的缺陷,就是不能驗證click點選事件是否正确。   

   (3)利用javascript去掉原代碼中的target="_blank"的屬性(目前為止還不清楚)

   (4)這種方法不清楚,看的不是很懂 

20.什麼是window id?

   window id可以通過java中。selenium.getAllWindowId()方法得到,不過一般情況下都是undefined

 22.selectFrame中的relative=up,relative=top,relative=parent等等,是什麼意思?它們之間存在怎樣的關系?

23.select,selectFrame,selectWindow,selectPopUp,這幾個功能的用法,以及在什麼時候用?

   select用來操作下拉框。文法:select(selectLocator,optionLocator) ,例:select id=person_person_type,lable=非戶籍人口

   selectFrame用來操作iframe架構。文法:selectFrame(location) ,例: select xpath =//iframe[@name='abc']

   selectWindow用來操作多個視窗問題,至于如何操作可參考上面的19條的描述。

   selectPopUp:這種情況還沒有遇到。

24.selectWindow 中的windowID怎樣定位呢?

(1)title:就是一個window标題欄中的文本。

   (2)name:例:<a target="selenium_blank60273" href="http://bbs.51testing.com/">軟體測試論壇</a>,則selectWindow name='selenium_blank60273'

   (3)var

25.錄制完成之後,經常會出現回放不成功的情況,在這種情況之下要如何處理呢?

   (1)看是否要加上wait,很多的時候,隻要你加上wait之後,回放就能正常運作了,例如:原本為click,會報錯,修改為clickAndWait之後,系統就能正常回放

   (2)判斷出錯的地方,此地方是不是因為架構沒有選對呢。例如:原本的架構為frame1,現在執行的操作在frame2時,此時要怎樣處理?

               加上以下兩條語句:selectFrame. relative=up, selectFrame. frame2Locator;

26.selenium ide不能錄制的東西?

   (1)html5中部分元素不能錄制

   (2)上傳檔案控件不能錄制

   (3)用于繪圖、圖像編輯、文檔設計、示範和web圖形設計的內建應用軟體不能錄制

   (4)silverlight flex and flash不能錄制

27.[warn] Link has target '_blank', which is not supported in Selenium!這個問題的原因?(可參考上文中的19)

 Link

has target

'_blank'這個好像是這樣的:當Link有這個屬性時,會打開新浏覽器視窗,如果target是"_blank"的話,Selenium不能找到打

開的新窗  口,如果target有一個明确的名字的話,selenium就能夠找到這個打開的新視窗并在其上進行操作了。

 "_blank"的話,selenium不能保證一定找到找準這個視窗,是以給出警告,如果隻有這樣的一個視窗和主視窗,selenium通過一些變通的方法也能找到該窗  口,但是不保證。

 這是selenium本身限制的問題,暫時不曉得怎麼解決,隻要不影響測試就不用管這個警告。

    "selenium_blank4795 "這個應該是OpenQA裡提給selenium的bug号吧?

28.可以直接在DOS環境下,在打開selenium-server.jar的解壓目錄的情況下,可以輸入以下指令java -jar selenium-server.jar -singlewindow

   -htmlsuite  *iexpolrehttp://www.baidu.com"C:\Documents and Settings\zhuhui\桌面\testcase1" "C:\Documents and Settings\zhuhui\桌面   \result.html"時,系統會報錯?

   對于這 個問題的解決方法,可參考http://bbs.51testing.com/thread-302909-1-1.html。由于要修改原碼,是以我暫時還沒有看。

29.com.thoughtworks.selenium.SeleniumException: XHR ERROR: URL =http://192.168.1.15:3000/loginResponse_Code = 500 Error_Message = Internal Server Error的原因是什麼?

注:

 1.pop-up blocker的意思是:彈出視窗屏蔽(阻止未經許可彈出的視窗出現)

 2.選擇一個架構之後,以後的指令都會在這個架構中,要想操作其它的架構,則必須要選擇相應的架構才能進行相關的操作。

 3.目前在測試中,還沒有遇到多個window之間轉換的情況。現在隻遇到多個frame轉換的情況。