Selenium WebDriver使用三个框架。无法找到元素

时间:2013-04-25 07:36:38

标签: java selenium webdriver selenium-webdriver

我是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)

非常感谢您的帮助。

2 个答案:

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