Я новичок в тестах на селен, мое сомнение колеблется между сгенерированным кодом веб-драйвера (java; j-unit) и тем, как запустить этот код с некоторыми изменениями в этом коде и обнаружил ошибки в проекте
до этого я могу узнать, где мы хотим внести изменения в код, что мы уже создали.
Для Eaxmple:
Я записал страницу формы входа в систему, сгенерировал код Java/Junit 4/webdriver с кнопкой подтверждения ссылки из Selenium IDE, и я импортирую его как пакет в eclipse...
Я добавляю функции или изменения в этой форме входа, и я пугающе забываю оставить кнопку "Ссылка"
Используя тест селена, который я сгенерировал раньше, в качестве кода Java/Junit 4/webdriver, я хочу напечатать O/P как "кнопка ссылки не найдена",
package web;
//import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
//import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
//import org.openqa.selenium.support.ui.Select;
public class webdriver {
private WebDriver driver;
private String baseUrl;
//private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "http://localhost/";
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
@Test
public void testUntitled() throws Exception {
driver.get(baseUrl + "/CRM/Default.aspx");
driver.findElement(By.id("LoginMain_UserName")).clear();
driver.findElement(By.id("LoginMain_UserName")).sendKeys("Admin");
driver.findElement(By.id("LoginMain_Password")).clear();
driver.findElement(By.id("LoginMain_Password")).sendKeys("xxx");
try {
assertTrue(isElementPresent(By.id("LoginMain_UserNameLabel")));
} catch (Error e) {
verificationErrors.append(e.toString());
}
try {
assertTrue(isElementPresent(By.id("LoginMain_PasswordLabel")));
} catch (Error e) {
verificationErrors.append(e.toString());
}
try {
assertTrue(isElementPresent(By.id("LoginMain_UserName")));
} catch (Error e) {
verificationErrors.append(e.toString());
}
try {
assertTrue(isElementPresent(By.id("LoginMain_Password")));
} catch (Error e) {
verificationErrors.append(e.toString());
}
try {
assertTrue(isElementPresent(By.id("LoginMain_LoginButton")));
} catch (Error e) {
verificationErrors.append(e.toString());
}
try {
assertTrue(isElementPresent(By.id("LinkButtonRegister")));
} catch (Error e) {
verificationErrors.append(e.toString());
}
driver.findElement(By.id("LoginMain_LoginButton")).click();
try {
assertEquals("Webdriver Testingest.,", driver.getTitle());
} catch (Error e) {
verificationErrors.append(e.toString());
}
try {
assertTrue(isElementPresent(By.id("ctl00_ctl00_ImageButton1")));
} catch (Error e) {
verificationErrors.append(e.toString());
}
try {
assertTrue(isElementPresent(By.id("ctl00_ctl00_ImageButton2")));
} catch (Error e) {
verificationErrors.append(e.toString());
}
try {
assertTrue(isElementPresent(By.linkText("Home")));
} catch (Error e) {
verificationErrors.append(e.toString());
}
try {
assertTrue(isElementPresent(By.linkText("Sales")));
} catch (Error e) {
verificationErrors.append(e.toString());
}
try {
assertTrue(isElementPresent(By.linkText("Masters")));
} catch (Error e) {
verificationErrors.append(e.toString());
}
}
@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
private boolean isElementPresent(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
Чтобы получить желание, которое вы хотите, вы должны изменить:
try {
assertTrue("Link button not found",isElementPresent(By.id("LinkButtonRegister")));
} catch (Error e) {
//Add here any log message if necesary
System.out.println("Link button not found");
verificationErrors.append(e.toString());
}
Надеюсь, это поможет!