2017-06-29 8 views
0

クロムで1つのサイトを開きますが、その前にすべての実行でクロム設定ウィンドウが表示されます。新しいウィンドウに切り替えて前のウィンドウを閉じます。 ()とdriver.quit()が表示されますが、ウィンドウ全体が閉じています。特定のタブに切り替えて他のタブを閉じる

1)どちらが子ウィンドウとして使用され、どちらが親ウィンドウとして使用されるかはどのようにして知ることができますか? 2)「クロム設定」として表示されるウィンドウを閉じるにはどうすればよいですか? 以下は私が使用しているコードです:

System.setProperty( "webdriver.chrome.driver"、 ".//chromedriver.exe");

 WebDriver driver = new ChromeDriver(); 
     driver.get("http://demoqa.com/"); 
     Thread.sleep(2000); 
     //windows maximize 
     driver.manage().window().maximize(); 
     String winHandleBefore = driver.getWindowHandle(); 
     // Switch to new window opened 
     for(String winHandle : driver.getWindowHandles()){ 
      driver.switchTo().window(winHandle); 
     } 
     driver.switchTo().window(winHandleBefore); 
+0

私は自分のクロームでそのサイトを開こうとしました。それは私のための任意のセキュリティ設定を開けていない –

+0

いくつの合計タブがありますか?セレンの焦点がどこにあるスクリプトが起動されたら?そのセキュリティページで? –

+0

はい..そのクロム設定は他のシステムには入っていません。私のシステムでは.. :(クロム設定を含む。)2つのタブがあり、demoqaサイトタブに切り替えてクロム設定タブを閉じたい – Rupali

答えて

1

アイデアは、現在のウィンドウID(親)を取得し、現在のウィンドウを含むすべてのウィンドウのIDも取得することです。次に、使用可能なすべてのウィンドウに1つずつ切り替えて、それが親ウィンドウであるかどうかを確認して閉じます。

今は2つのタブが開いていて、最初のタブ(親)にあるとします。この場合、セキュリティタブになります。

String winHandleBefore = driver.getWindowHandle(); 

    //All tab's id (security + toolsQA) and storing it. 
    Set<String> all = driver.getWindowHandles(); 

    //Get all the tab id's including security and iterate 
    for(String winHandle : driver.getWindowHandles()) 
    { 
     if(winHandle.equals(winHandleBefore)) 
     { 
     //Condition satisfied. Switching to the security tab and closing it 
     driver.switchTo().window(winHandle); 
     driver.close(); 

     } 
    } 
    //Now the security tab will be closed we need to switch to the toolsQA whose id is in "all" 
    //Removing the security tab id from all. 
    all.remove(winHandleBefore); 
    //Now we have only one toolsqa id in "all" 
    for(String winHandle : all) 
    { 

     driver.switchTo().window(winHandle); 
     //Now in toolsQA 

注:私たちはこのような場合には2つだけのタブを持っているので、このソリューションは最高ではないかもしれませんが、これは動作するはずです。ありがとう。

+0

Thanks..itは...働いた:) ここで必要なコードの少しだけ変更: (!winHandle.equals(winHandleBefore))の場合を を//!ツールキットを親として取っているので、 が必要です。 ご支援ありがとうございます。:) – Rupali

+0

よろしくお願いします。それはいいです。 –

関連する問題