2016-08-23 4 views
2

Ich versuche, die Registerkarte zu wechseln und den Vorgang zu tun, indem ich zur URL 'http://toolsqa.com/' und dann zu Demo Sites -> E-Commerce Demo Site navigiere. Sobald dieser Link angeklickt wurde, wird ein neuer Tab im selben Browser mit der URL '' geöffnet. Hier habe ich viele Möglichkeiten ausprobiert, den Fokus auf den neu geöffneten Tab zu setzen. Aber nicht in der Lage, es zu tun, nicht in der Lage, Element Fehler zu erkennen, während Sie versuchen, irgendwelche Operationen in der neuen Registerkarte zu tun.Ich kann die Registerkarte nicht mit Selenium webdriver wechseln

Verschiedene Codes verwendet:

code1:

\t public void switchWindow(String originalWindowKey){ 
 
\t \t 
 
\t \t System.out.println("Ori"+originalWindowKey); 
 
\t \t Set<String> multipleWindowHandles = driver.getWindowHandles(); 
 
\t \t System.out.println(multipleWindowHandles); 
 
\t \t System.out.println("Entry1"); 
 
\t \t String newWindowKey = ""; 
 
\t \t System.out.println("Entry2"); 
 
\t \t for (String windowKeys : multipleWindowHandles) { 
 
\t \t \t \t System.out.println("1"+windowKeys); 
 
\t \t \t \t if(windowKeys.equals(originalWindowKey) == false){ 
 
\t \t \t \t \t System.out.println("Success"); 
 
\t \t \t \t \t newWindowKey = windowKeys; \t 
 
\t \t \t \t } \t \t 
 
\t \t } 
 
\t \t 
 
\t \t driver.switchTo().window(newWindowKey); \t 
 
\t }

code2:

\t public void sampleSwitch(){ 
 
\t \t 
 
\t \t driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"\t"); 
 
\t \t driver.switchTo().defaultContent(); 
 
\t \t 
 
\t }

Code3:

\t public void oneSwitch(){ 
 
\t \t driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL, Keys.PAGE_DOWN); 
 
\t }

Die obige folgenden Weisen i zum Schalten der Laschen verwendet, aber kein Glück vor. Bitte helfen Sie mir in dieser Hinsicht.

+0

Dies ist zu öffnen schöne Lösung Fenster wechseln Es scheint, Sie haben es nicht versucht: http://StackOverflow.com/A/9597714/4855333 – kotoj

+0

Hier haben Sie eine andere Möglichkeit http://StackOverflow.com/Questions/17547473/How-To-Open-A-New-t ab-using-selen-webdriver-with-java –

+0

Mögliches Duplikat von [Wie man zum neuen Browserfenster wechselt, welches sich nach einem Klick auf den Button öffnet] (http://stackoverflow.com/questions/9588827/how-to- Wechsel zum neuen Browser-Fenster-was-öffnet-nach-Klick-auf-dem-Knopf) –

Antwort

0

Sie dieses Problem mit kleinem Hack, indem target Attribut mit JavaScript vermeiden:

import org.openqa.selenium.JavascriptExecutor; 

JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("document.querySelector('a[href="http://store.demoqa.com"]').target='_self';"); 

Diesem sollte webdriver zwingen, neue URL in derselben Registerkarte

+0

P.S. Ich benutze 'Java' nicht, also bin ich mir nicht sicher über Syntax ... aber' JavaScript' ist korrekt :) – Andersson

0
Set<String> handles = driver.getWindowHandles(); 
driver.switchTo().window(handles.toArray(new String[1])[1]); 

System.out.println("Handles - " + handles.size()); 
System.out.println("Title - " + driver.getTitle());  
System.out.println("Menu text - " + driver.findElement(By.id("menu-main-menu")).getText()); 



RESULT -- 
Handles - 2 
Title - ONLINE STORE | Toolsqa Dummy Test site 
Menu text - Home 
Product Category 
All Product 
+0

'java.lang.ArrayIndexOutOfBoundsException: 1' Fehler wenn ich den obigen Code benutze. –

+0

Es funktioniert perfekt für mich und ich laufe auf Windows 8 mit der neuesten Chrom- und Chrom-Version. Wenn die Indexausnahme von switchto line kommt, dann verwenden Sie diese stattdessen - driver.switchTo(). Window (handles.toArray (new String [handles.size()]) [1]); – Grasshopper

Verwandte Themen