Java 切换帧后无接触异常

Java 切换帧后无接触异常,java,firefox,selenium,junit,Java,Firefox,Selenium,Junit,更新: 我想我看到了错误,我再次配置了Selenium IDE并重新创建了测试,当我在Eclipse中打开时,我在代码中看到了以下注释: public void testEcsf3() throws Exception { driver.get(baseUrl + "/something.com"); WebElement frame = driver.findElement(By.name("body")); driver.switchTo().frame(frame)

更新

我想我看到了错误,我再次配置了Selenium IDE并重新创建了测试,当我在Eclipse中打开时,我在代码中看到了以下注释:

public void testEcsf3() throws Exception {
    driver.get(baseUrl + "/something.com");
    WebElement frame = driver.findElement(By.name("body"));
    driver.switchTo().frame(frame);
    //...
    //code for navigate to the target page
    //...
    // ERROR: Caught exception [ERROR: Unsupported command [selectWindow | name=body | ]]
    //Target page - another frame with name 'body'
    driver.findElement(By.xpath("//tr[28]/td[2]/a/font")).click();// <-- target element in target page
   //...
    //code for navigate to the target page
    //...
  }
注意:错误中提到的链接没有内容! 这是错误的地方:

driver.get(baseUrl + "/something.com");
driver.findElement(By.name("user")).sendKeys("aaa"); //<--
driver.findElement(By.name("password")).sendKeys("xxx");
driver.findElement(By.name("button0")).click();
driver.get(baseUrl+“/something.com”);

driver.findElement(按名称(“用户”)).sendKeys(“aaa”)// 我认为你的问题如下: 这一行:
driver.get(baseUrl+“/something.com”)
让他转到这个页面,第二行让他立即搜索元素(所以浏览器根本没有时间加载页面)

所以试试这个:

WebDriverWait wait; 
wait = new WebDriverWait(webdriver, 10);
try{
wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("user")));
}catch(TimeoutException e){
verifyElementPresent(locator);
}
Selenium selenium = new WebDriverBackedSelenium(driver,"http://example.com");
selenium.open("http://something.com");
或:


你一定是司机吗?你可以试试这个:

WebDriverWait wait; 
wait = new WebDriverWait(webdriver, 10);
try{
wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("user")));
}catch(TimeoutException e){
verifyElementPresent(locator);
}
Selenium selenium = new WebDriverBackedSelenium(driver,"http://example.com");
selenium.open("http://something.com");
和可选的

selenium.waitForPageToLoad();
使用
WebDriverBackedSelenium
等工具,您尝试做的其他事情也更简单

selenium.type(String field,String text);

您可以查看javadoc和更深入的解释

我停止了几天这个项目,今天我解决了这个问题。 代码如下:

    for (String handle : driver.getWindowHandles()) {
        driver.switchTo().window(handle);
    }
    WebElement body = driver.findElement(By.name("body"));
    driver.switchTo().frame(body);
我希望这能帮助别人。
谢谢。

您使用的是什么版本的Selenium?听起来像是一个老版本。我使用的是最新版本2.35。我使用的是FireFox驱动程序,在Selenium IDE私有WebDriver中的testcase中生成。。。驱动程序=新的FirefoxDriver();我觉得和这位车手呆在一起很有趣,只有当这是唯一的选择时才会改变(我错了?)。谢谢。好的,你可以用你的驱动程序作为参数来构造WebDriverBackedElenium对象Hi jollyjoyce1995,谢谢你的关注。我试过你的建议,但没用。这是代码:public void testEcsf3()抛出异常{driver.get(baseUrl+“/something.com”);wait=new-WebDriverWait(driver,10);try{wait.until(ExpectedConditions.visibilityOfElementLocated(By.name(“user”);}catch(异常e){isElementPresent(By.name(“user”);}注意:我使用的是FirefoxDriver(通过Selenium IDE代码生成)。