Link has target '_blank', which is not supported in Selenium
詳細描述:如果你要點擊的鏈接代碼是這樣:
<a target="_blank" href="http://www.baidu.com" > </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"的屬性