2015年5月22日 星期五

[Selenium] 如何關閉跳出來的廣告新視窗

原本以為第一個test case已經完成的差不多了,只要修點小東西就可以如法炮製了
心血來潮想要真的不盯著螢幕看,看會怎樣
之前為了剛過程,會先把跳出來的廣告視窗關掉

結果不把跳出來的視窗關掉的結果就是在第三步的時候就不動了
其實這也是很奇怪的結果
若當真是跳出新視窗會擋讓程式錯亂的話,但他第一第二步都還是正確運作
只有到第三步的某一頁會跳著,都是那一樣
本來還不願相信是新視窗的問題
但只要把跳出視窗關了 ,測試就會順利進行
後來找到這篇真是救了我一命!!
    driver.getAllWindowHandles().then(function (allhandles) {
        console.log(allhandles);
    });

使用getAlwindowHandles()就可以得到以陣列型式的可操作視窗的列表 大概像這樣
  ['CDwindow-fdafdsa-feawqfda-fdafdsaf', 'CDwindow-fdafdsa-feawqfda-fdafferwt4r3f']
因為跳出視窗一定是等第一個視窗load了之後才跳出來,所以跳出視窗是第二個視窗 所以我就先將主視窗移到第二個視窗上->關閉他->跳回原本的視窗
  driver.getAllWindowHandles().then(function (allhandles) {
    console.log(allhandles);
    driver.switchTo().window(allhandles[1]);
    driver.close();
    driver.switchTo().window(allhandles[0]);
  });
http://stackoverflow.com/questions/30114201/error-using-getwindowhandles-in-selenium-webdriverjs

沒有留言:

張貼留言