我是Selenium Webdriver的新手。我正在尝试自动化网页,我面临两个问题。我无法单击框架中的“搜索”按钮。以下是我的代码。
WebDriverWait wait = new WebDriverWait(driver,120,1000);
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("frameview"));
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("epilowerframe"));
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("productSearchIframe"));
driver.switchTo().frame("frameview")
.switchTo().frame("epilowerframe")
.switchTo().frame("productSearchIframe");
driver.findElement(By.id("styleSearchForm:goBtn")).click();
StylesearchForm:goBtn位于productsearchIframe中。
我总是收到错误:
等待帧可用120秒后超时:epilowerframe 构建信息:版本:'2.31.0',修订版:'1bd294d',时间:'2013-02-27 20:53:56' 系统信息:os.name:'Windows 7',os.arch:'amd64',os.version:'6.1',java.version:'1.6.0_33' 驱动程序信息:driver.version:未知 在org.openqa.selenium.support.ui.FluentWait.timeoutException(FluentWait.java:259) 在org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:228) 在Nike_Demo.main(Nike_Demo.java:59)
非常感谢您的帮助。
答案 0 :(得分:0)
这不是问题所在,但有时候,根据应用程序的不同,您可能会过快地切换帧。每次调用.switchTo()以获得新帧后,应该暂停1-2秒。这将为浏览器驱动程序在执行另一个switchTo()之前加载新DOM的时间。此外,它似乎是你要切换到每帧两次;不确定你是否注意到了这一点。
答案 1 :(得分:0)
frameToBeAvailableAndSwitchToIt已经将驱动程序切换到帧。 你不需要这样做:
driver.switchTo().frame("frameview")
driver.switchTo().frame("epilowerframe")
driver.switchTo().frame("productSearchIframe");
只需使用代码:
WebDriverWait wait = new WebDriverWait(driver,120,1000);
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("frameview"));
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("epilowerframe"));
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("productSearchIframe"));
driver.findElement(By.id("styleSearchForm:goBtn")).click();