selenium錄製後回放報錯

Link has target '_blank', which is not supported in Selenium

詳細描述:如果你要點擊的鏈接代碼是這樣:

<a target="_blank" href="http://www.baidu.com" >&nbsp;</a>,那麼由於target="_blank",點擊這個鏈接,會打開一個新的窗體。在新窗體中打開對應的href。但是由於slenium不能保證正確找到新打開的窗體,會報這個錯。

[warn] Link has target '_blank', which is not supported in Selenium! Randomizing target to be: selenium_blank28995

這樣,在如果需要操作新窗體中的元素的話,slenium報錯說找不到元素之類的。
當Link有這個屬性時,會打開新瀏覽器窗口,如果target是"_blank"的話,Selenium不能找到打開的新窗  口,如果target有一個明確的名字的話,selenium就能夠找到這個打開的新窗口並在其上進行操作了。
 "_blank"的話,selenium不能保證一定找到找準這個窗口,所以給出警告,如果只有這樣的一個窗口和主窗口,selenium通過一些變通的方法也能找到該窗  口,但是不保證。
關於這個問題的解決辦法,有前輩已經總結:

http://bbs.51testing.com/thread-206903-1-1.html

我覺得其中第一種方法取href再open的方式最簡單也最實用。

錄製時,會跳出多個窗口,此時要怎樣處理?
   存在四種解決方法,可以參考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"的屬性
  
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章