2

我無法使用JavaScript在Chrome瀏覽器中關閉選項卡 以下代碼中的最後一行js.executeScript("window.close()");不起作用。任何人都可以幫助解決這個問題嗎?無法使用JavaScript關閉Chrome瀏覽器中的選項卡

package TestCode; 

import org.openqa.selenium.JavascriptExecutor; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 

public class Chrome { 

    public static void main(String[] args) throws InterruptedException { 
     // TODO Auto-generated method stub 

     System.setProperty("webdriver.chrome.driver","C:\\Akash\\Drivers\\chromedriver.exe"); 
     WebDriver driver = new ChromeDriver(); 

     driver.get("https://www.gmail.com"); 

     JavascriptExecutor js = (JavascriptExecutor) driver; 
     js.executeScript("window.open('https://www.facebook.com')"); 

     Thread.sleep(5000); 

     js.executeScript("window.close()"); 

    } 

} 
+0

其實這種方式不能關閉其他窗口..你需要切換該窗口首先查找所有打開的窗口爲'driver.windowHandles',然後關閉該窗口爲'driver.close()'..按照[此鏈接](https://stackoverflow.com/questions/11449179/how-can -i-近一個特定的窗口 - 使用 - 塞萊nium-webdriver-with-java).. –

+0

這可能有助於https://stackoverflow.com/questions/18493572/closing-all-opened-tabs-except-the-first-tab-main-tab-using-webdriver – nullpointer

回答

3

通過調用js.executeScript("window.close()");您試圖關閉主窗口,而不是你剛打開。要關閉彈出窗口,您需要以某種方式找到它或將其引用保存在JavascriptExecutor上下文中。

注意,全局變量有should be preserved

注意局部變量將不可用,一旦腳本有 執行完畢,但全局變量將持續存在。

所以,你可以嘗試做如下:

JavascriptExecutor js = (JavascriptExecutor) driver; 
    js.executeScript("popup_window = window.open('https://www.facebook.com')"); 

    Thread.sleep(5000); 

    js.executeScript("popup_window.close()"); 
1

您也可以嘗試getWindowHandles()getWindowHandle()

String parentWindow=driver.getWindowHandle(); 
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

// Pass a window handle to the other window 
for(String childWindow: driver.getWindowHandles()){ 
if(!childWindow.equals(parentWindow)) 
{ 
System.out.println("child"); 

//switch to child window 
driver.switchTo().window(childWindow); 
//Your operations 
driver.close(); 

} 
} 
System.out.println("Come to parent window"); 

//switch to Parent window 
driver.switchTo().window(parentWindow); 
相關問題