导出到JUnit 4(Webdriver)时,我有以下selenium IDE代码返回错误。
虽然我将其导出为Selenium RC时工作正常。
请告诉我等同于以下错误的webdriver -
IDE代码:
<tr>
<td>deleteAllVisibleCookies</td>
<td></td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>/index.html</td>
<td></td>
</tr>
<tr>
<td>selectFrame</td>
<td>content</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>librarySelect</td>
<td>label=XYZ Software Inc.</td>
</tr>
<tr>
<td>type</td>
<td>userNameInput</td>
<td>demoUser</td>
</tr>
<tr>
<td>type</td>
<td>passwordInput</td>
<td>demoPassword</td>
</tr>
<tr>
<td>clickAndWait</td>
<td>submitButton</td>
<td></td>
</tr>
.......
<tr>
<td>clickAndWait</td>
<td>link=Admin</td>
<td></td>
</tr>
.......
导出的Webdriver代码:[包含错误]
@Test
public void testArchivalLogReport() throws Exception {
// ERROR: Caught exception [ERROR: Unsupported command [deleteAllVisibleCookies | | ]]
driver.get(baseUrl + "/index.html");
// ERROR: Caught exception [ERROR: Unsupported command [selectFrame | content | ]]
// ERROR: Caught exception [Error: locator strategy either id or name must be specified explicitly.]
// ERROR: Caught exception [Error: locator strategy either id or name must be specified explicitly.]
// ERROR: Caught exception [Error: locator strategy either id or name must be specified explicitly.]
// ERROR: Caught exception [Error: locator strategy either id or name must be specified explicitly.]
// ERROR: Caught exception [ERROR: Unsupported command [selectFrame | relative=up | ]]
// ERROR: Caught exception [ERROR: Unsupported command [selectFrame | menu | ]]
driver.findElement(By.linkText("Admin")).click();
// ERROR: Caught exception [ERROR: Unsupported command [selectFrame | relative=up | ]]
// ERROR: Caught exception [ERROR: Unsupported command [selectFrame | content | ]]
driver.findElement(By.xpath("//td[11]/span/b")).click();
// ERROR: Caught exception [Error: locator strategy either id or name must be specified explicitly.]
// ERROR: Caught exception [ERROR: Unsupported command [selectWindow | name=content | ]]
// ERROR: Caught exception [ERROR: Unsupported command [selectFrame | name=content | ]]
// Warning: verifyTextPresent may require manual changes
try {
assertTrue(driver.findElement(By.cssSelector("BODY")).getText().matches("^[\\s\\S]*Data Extract[\\s\\S]*$"));
} catch (Error e) {
verificationErrors.append(e.toString());
}
// ERROR: Caught exception [ERROR: Unsupported command [selectFrame | relative=up | ]]
// ERROR: Caught exception [ERROR: Unsupported command [selectFrame | menu | ]]
driver.findElement(By.xpath("//a/font")).click();
}
导出的RC代码很好,看起来像:
@Test
public void testArchival Log Report() throws Exception {
selenium.deleteAllVisibleCookies();
selenium.open("/index.html");
selenium.selectFrame("content");
selenium.select("librarySelect", "label=XYZ Software Inc.");
selenium.type("userNameInput", "demoUser");
selenium.type("passwordInput", "demoPassword");
selenium.click("submitButton");
selenium.waitForPageToLoad("30000");
selenium.selectFrame("relative=up");
selenium.selectFrame("menu");
selenium.click("link=Admin");
..........
}
我如何导出? 我正在使用Java / Junit 4 / Webdriver
我可以在选项中看到 Java / Junit 4 / Webdriver Backed ,我应该使用它吗?它为我提供了与Selenium RC选项相同的导出文件,唯一的变化就是我们如何获得webdriver。
答案 0 :(得分:1)
我使用Webdriver API计算出来了:
@Test
public void testArchivalLogReport()
throws Exception
{
driver.manage().deleteAllCookies();
driver.get(baseUrl + "/index.html");
driver.switchTo().frame("content");
Select library = new Select(driver.findElement(By.id("librarySelect")));
library.selectByVisibleText("XYZ Software Inc.");
driver.findElement(By.name("userInput")).sendKeys("username");
driver.findElement(By.name("passwordInput")).sendKeys("password");
driver.findElement(By.name("submitButton")).click();
WebDriverWait wait = new WebDriverWait(driver, 120);
wait.until(ExpectedConditions.elementToBeClickable(By
.linkText("Admin")));
// Store the window handle of the parent window, so that you can switch
// back to it later.
String wHandle = driver.getWindowHandle();
driver.findElement(By.linkText("XYZ")).click();
driver.findElement(By.xpath("//td[11]/span/b")).click();
driver.findElement(By.id("someLink")).click();
try
{
assertTrue(driver.findElement(By.cssSelector("BODY")).getText()
.matches("^[\\s\\S]*Data Extract[\\s\\S]*$"));
}
catch (Error e)
{
verificationErrors.append(e.toString());
}
// Switch back to parent window using stored window handle
driver.switchTo().window(wHandle);
driver.switchTo().frame("menu");
driver.findElement(By.xpath("//a/font")).click();
}