2017-02-07 9 views
-1

Ich verwende ein Schlüsselwort getriebenes Framework und ruft es aus einer DS.java Datei. Meine Anforderungen, wie folgend:
Wechseln zwischen Browser-Fenstern mit Selenium Webdriver

  1. Browser window01: Aufgaben,
  2. öffnen Sie einen neuen window02 Browser, indem Sie auf URL klicken in window01,
  3. Auf window02, bestimmte Aufgaben,
  4. Schließen window02 und Schalter Kontrolle window01,
  5. ich erhalte Fehler org.openqa.selenium.NoSuchWindowException: no such window. (Session info: chrome=55.0.2883.87)

(Driver info: chromedriver=2.26.436362 (5476ec6bf7ccbada1734a0cdec7d570bb042aa30),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)

Ich habe mit unten genannten Code getan, aber es hat nicht für mich funktioniert.

(able to get the window handle here: CDwindow-b20d349b-3cb5-42ed-9f77-5229c88d4300)

public static void store_ParentWindow(String TCID,String vTCD,String vKW) throws IOException, InterruptedException, AWTException, BiffException, ParseException{ 
    String parentWindow = driver.getWindowHandle(); 
    DS.envVar.put("parentWindow", parentWindow); 
    Thread.sleep(5000); 
    System.out.println(DS.envVar.get("parentWindow")); 
    } 

public static void switch_ParentWindow(String TCID,String vTCD,String vKW) throws IOException, InterruptedException, AWTException, BiffException, ParseException{ 

    driver.close(); 
    String parentWindow = DS.envVar.get("parentWindow"); 
    System.out.println(DS.envVar.get("parentWindow")); 
    driver.switchTo().window(parentWindow); 
    driver.switchTo().defaultContent(); 
    Thread.sleep(5000); 
    } 

Kann mir jemand zu diesem Thema helfen?

Antwort

1

Ich vermute, dass das Steuerelement im übergeordneten Fenster ist, wenn driver.close(); wird in switch_ParentWindow Methode ausgeführt. Ich würde vorschlagen, dass Sie die Fenstergriffe speichern, sobald Sie auf URL in Fenstern klicken, die beim Öffnen neuer Fenster im Schritt, dh führen würden 2. Sie können tun, dass mit folgendem Code:

Set<String> handles = driver.getWindowHandles(); 
Iterator<String> itr = handles.iterator(); 
String parentWindow = itr.next(); 
String newWindow = itr.next(); 

Wann immer Sie brauchen Um das neue Fenster zu schließen, stellen Sie zuerst sicher, dass der Fokus auf einem neuen Fenster liegt und schließen Sie es dann. Sie können das tun folgenden Code:

driver.switchTo().window(newWindow); 
driver.close(); 

Sie dann an das übergeordnete Fenster wechseln und mit den erforderlichen Maßnahmen fortzusetzen. Mit dem folgenden Code können Sie zum übergeordneten Fenster wechseln:

Lassen Sie mich wissen, wenn Sie weitere Fragen haben.

0

Versuchen Sie dies unter dem Code.

+0

Ihr Code funktionierte nicht für mich, da ich sie in 2 verschiedenen Schritten benötige> Übrigens habe ich kein Problem beim Erfassen des Elternfenstergriffs oder beim Wechseln zum neuen Fenster und Schließen. Das einzige Problem ist, dass ich nach dem Schließen des neuen Fensters nicht zum Eltern-Fenster wechseln kann. – xxan

+0

Für zurück zum vorherigen Fenster benutze 'driver.switchTo(). Window (winHandleBefore);' –

+0

Das habe ich auch ohne Glück versucht. Vielen Dank für Ihre Antwort – xxan