捕获22 - 无法切换到帧,无法定位我无法切换到的帧中的元素。啊

时间:2014-07-04 22:19:50

标签: java selenium-webdriver

你好有用的Selenium window&帧切换家伙(或女孩),

有人可以提供一些窗口或框架切换帮助吗?

我正在尝试自动化基本购物车流量测试用例。我正在使用Java和Selenium Webdriver(独立2.35.0)来自动化Firefox。买方找到产品并点击“添加到购物车”按钮。背景页面显示为灰色,并出现一个弹出窗口。在弹出窗口中,有一个“Checkout”按钮。点击该按钮后,弹出窗口被解除,用户可以继续购买流程(填写信用卡和运输信息等)。

对于我的生活,我无法进入该弹出窗口并单击“结帐”按钮。我试过循环窗口句柄。循环的打印输出显示窗口句柄的大小仅为1(尽管Firebug显示多个框架/窗口)。我已经尝试通过名称和索引切换到iframe无济于事。我等待至少3分钟,Checkout按钮元素变得可见。 Firebug显示窗口是#7。

一旦我可以切换到弹出窗口,我应该回家免费。任何帮助表示赞赏。谢谢你的时间。

    import java.util.Set;
    import java.util.List;
    import java.util.concurrent.TimeUnit;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.firefox.*;
    import org.openqa.selenium.support.ui.ExpectedConditions;
    import org.openqa.selenium.support.ui.Select;
    import org.openqa.selenium.support.ui.WebDriverWait;

    public class TestCase1 {

    @SuppressWarnings("rawtypes")
    public static void main(String[] args) throws InterruptedException {

    WebDriver driver = new FirefoxDriver();

    driver.get("http://www.lampsplus.com/products/franklin-iron-works-hickory-point-15-inch-high-outdoor-light__09569.html");

    Set<String> windows = driver.getWindowHandles();
    System.out.println("size:" + windows.size());

    driver.findElement(By.xpath(".//*[@id='pdAddToCart']")).click();


    WebDriverWait wait = new WebDriverWait(driver, 180);
                    wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#aCheckOut1")));


    System.out.println("now size is:" + windows.size());

    driver.findElement(By.xpath(".//*[@id='aCheckOut1']")).click();

    //cc form info - omitted for brevity

    driver.close();
    }


    } 

1 个答案:

答案 0 :(得分:0)

这可能适合你。 WebDriverWait现在等待iframe变为可见,切换到iframe,然后点击您想要的元素。

WebDriverWait wait = new WebDriverWait(driver, 180);
                wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div#add-to-cart>iframe")));

driver.switchTo().frame(driver.findElement(By.cssSelector("div#add-to-cart>iframe")));
driver.findElement(By.xpath(".//*[@id='aCheckOut1']")).click();

完成iframe后,请记得切换回来:

driver.switchTo().defaultContent();