2017-01-23 2 views
-2

Ich kann nicht zwischen den Iframes eines Fensters wechseln. Ich möchte einen Iframe im oberen Fenster einer Webseite auswählen.Wechseln zu iframes in Selenium-Java

Der Link der Seite lautet: http://way2automation.com/way2auto_jquery/dropdown.php#example-1-tab-1

enter image description here

ich zwei iframes finden, aber auf die Iframes nicht wechseln kann. Jeder iframe hat seine eigenen Dropdowns, aus denen ich die Elemente auswählen muss.

Ich habe versucht mit driver.switchto(), aber es erkennt nicht die iframes.

Mein Code ist:

public void SimpleDropDown() throws InterruptedException { 
     dr.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
//  dr.findElement(By.xpath("//a[text()='Select Country']")).click(); 
//  dr.switchTo().frame(dr.findElement(By.xpath("//div[@id='example-1-tab-1']//iframe"))); 
     Select dropdown = new Select(dr.findElement(By.xpath("html/body/select"))); 
     dropdown.selectByVisibleText("India"); 
     System.out.println(dropdown.getFirstSelectedOption().getText()); 
    } 

    public void comboBox() { 
     dr.switchTo().frame(2); 
     dr.findElement(By.xpath("//a[text()='Enter Country']")).click(); 
     Select dropdown = new Select(dr.findElement(By.xpath("//select[@id='combobox']"))); 
     dropdown.selectByVisibleText("Portugal"); 
+0

Verwenden 'Frame-Index mit 0 'zu tun für 'first frame' – NarendraR

+0

Die Zielseite erfordert eine Registrierung, daher sollten Sie den entsprechenden HTML-Code angeben. Außerdem benötigen Sie 'driver.switchTo(). DefaultContent();' bevor Sie zum nächsten 'iframe' wechseln. – Andersson

Antwort

0

mit Startindex als 0 Werke Rahmen Schalt sondern von Schaltrahmen auf Standard verwenden sollten SwitchTo() parentFrame(), wie es nach oben Fenster geht (. nur wenn Sie nicht mit verschachtelten Frames arbeiten.

0

Versuchen Sie, diesen Code auszuführen.

WebElement iframe = driver.findElement(By.tagName("iframe")); 
driver.switchTo().frame(iframe);        //Move inside to the frame. 
WebElement body = driver.findElement(By.tagName("body")); 
body.click(); 
driver.findElement(By.xpath("//a[text()='Enter Country']")).click(); 
Select dropdown = new Select(driver.findElement(By.xpath("//select[@id='combobox']"))); 
dropdown.selectByVisibleText("Portugal"); 
driver.switchTo().defaultContent();       //Move outside to the frame. 
+0

Bitte markieren Sie diese Antwort als Akzeptiert, wenn Ihr Problem gelöst ist. So wird es auch anderen Benutzern helfen. Danke :) –

0

Ihre Seite zeigt 2 iFrames auf der gleichen Seite. Also, bevor Sie das Drop-Down-Auswahl müssen Sie auf frame wechseln als Drop-Down ist unter iframe -

driver.switchTo().frame(0); 
    Select select = new Select(driver.findElement(By.tagName("select"))); 
    select.selectByValue("Angola"); 

Nachdem Sie die Auswahl getroffen haben, müssen Sie den Rahmen kommen mit -

driver.switchTo().defaultContent(); 

und navigieren auf die anderen Registerkarte und dann wieder Ihr Element ist unter iframe so müssen die gleichen Aktionen wieder

driver.findElement(By.xpath("//li/a[text()='Enter Country']")).click(); 
    driver.switchTo().frame(1); 
    driver.findElement(By.xpath("//span[@class='custom-combobox']/input")).sendKeys("India"); 
    driver.switchTo().defaultContent(); 
+0

Das ist, was die erste Antwort sagt! – Vishal

+0

Warten Sie 6 Stunden, bevor Sie akzeptieren. – Vishal