Java Selenium WebDriver使用三个框架。无法定位元素
我对Selenium Webdriver很陌生。我正在尝试自动化一个网页,我面临两个问题。我无法单击框架中的搜索按钮。下面是我的代码Java Selenium WebDriver使用三个框架。无法定位元素,java,selenium,webdriver,selenium-webdriver,Java,Selenium,Webdriver,Selenium Webdriver,我对Selenium Webdriver很陌生。我正在尝试自动化一个网页,我面临两个问题。我无法单击框架中的搜索按钮。下面是我的代码 WebDriverWait wait = new WebDriverWait(driver,120,1000); wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("frameview")); wait.until(ExpectedConditions.fr
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:'windows7',os.arch:'amd64',os.version:'6.1',java.version:'1.6.0!
驱动程序信息:驱动程序。版本:未知
位于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)
非常感谢你的帮助 这通常不是问题所在,但有时,根据应用程序的不同,您可能切换帧太快。每次调用.switchTo()后都应该暂停1-2秒,以进入新帧。这将使浏览器驱动程序有时间在执行另一个switchTo()之前加载新DOM。而且,似乎您要切换到每一帧两次;不确定您是否注意到。FrameToBeavailable和SwitchToIt已将驱动程序切换到该帧。 您不需要执行以下操作:
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();
也许您可以尝试通过xpath单击?只是为了确定-您确定帧是嵌套的吗?如果它们是嵌套的,您就可以了,djangofan的答案可能适用于您。如果不是,你就错了。