切换到Selenium-Java中的iframe

时间:2017-01-23 12:01:00

标签: selenium iframe xpath

我无法在窗口的iframe之间切换。我想在网页的顶部窗口中选择一个iframe。

页面的链接是: http://way2automation.com/way2auto_jquery/dropdown.php#example-1-tab-1

enter image description here

我可以找到两个iframe,但无法切换到iframe。每个iframe都有自己的下拉列表,我需要从中选择元素。

我尝试过使用driver.switchto()但它无法识别iframe。

我的代码是:

    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");

3 个答案:

答案 0 :(得分:0)

切换到起始索引为0的帧,但不是切换到默认帧,而是应该使用switchTo()。parentFrame(),因为它返回到顶部窗口(仅当您不使用嵌套帧时) )。

答案 1 :(得分:0)

尝试执行此代码。

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.

答案 2 :(得分:0)

您的网站在同一页面中显示2 iFrames。因此,在选择下拉列表之前,您需要切换到frame,因为您的下拉列表位于iframe -

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

完成选择后,需要使用 -

来显示框架
driver.switchTo().defaultContent();

然后导航到另一个标签,然后您的元素再次位于iframe下,因此需要再次执行相同的操作

    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();