你好有用的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();
}
}
答案 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();