更新:
我想我看到了错误,我再次配置了我的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
//...
}
问题是页面之间的流程有更多的一个框架,名称为“body”(我不能改变它),我怎么能使这个工作? 感谢。
-
我正在尝试在Eclipse中使用JUnit使用Selenium测试用例(在浏览器中为Ok)。 当我尝试运行测试用例时,我收到此错误:
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"name","selector":"user"}
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Driver info: org.openqa.selenium.firefox.FirefoxDriver
注意:错误中提到的链接没有内容! 这是错误点:
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();
答案 0 :(得分:0)
我认为您的问题如下:
这一行: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);
}
或:
for (int second = 0;; second++) {
if (second >= 60)
fail("timeout");
try {
if (isElementPresent(By.name("user"))) {
break;
}
} catch (Exception e) {
}
Thread.sleep(1000);
}
答案 1 :(得分:0)
你是否受到司机的约束?你可以试试这个:
Selenium selenium = new WebDriverBackedSelenium(driver,"http://example.com");
selenium.open("http://something.com");
并且可选地
selenium.waitForPageToLoad();
使用WebDriverBackedSelenium
之类的
selenium.type(String field,String text);
您可以查看that获取javadoc和更深入的解释
答案 2 :(得分:0)
我停止了这个项目的一些日子,今天我解决了麻烦。 这是代码:
for (String handle : driver.getWindowHandles()) {
driver.switchTo().window(handle);
}
WebElement body = driver.findElement(By.name("body"));
driver.switchTo().frame(body);
我希望这有助于某人。 感谢。