我是Selenium Webdriver的新手,我有几个问题:
首先,我有2个班级,' Login.java'和' SelectCity.java
第1课:Login.java
invalidLogin
validLogin
第2课:SelectCity.java
目前,我在Login.java中写过
@After
public void tearDown() throws Exception {
driver.close();
}
这意味着浏览器在完成运行后会关闭吗?
这是我的问题:
运行validLogin后如何制作,它会继续运行下一个类(SelectCity.java)? 是否可以这样做?
如何使最后一个浏览器(测试有效登录)没有关闭?
我当前的Login.java类:
public class Login extends SelectCityAfterLogin{
private WebDriver driver;
private String baseUrl;
private StringBuffer verificationErrors = new StringBuffer();
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "http://mysite/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void testLoginInvalidPass() throws Exception {
driver.get(baseUrl + "/mysite/login.aspx");
driver.findElement(By.id("txtUsername")).sendKeys("user1");
driver.findElement(By.id("txtPassword")).sendKeys("somePassword");
driver.findElement(By.id("lbLogin")).click();
try {
assertEquals("Invalid User or Password", driver.findElement(By.id("lblError")).getText());
} catch (Error e) {
verificationErrors.append(e.toString());
}
}
@Test
public void testLoginInvalidUsername() throws Exception {
driver.get(baseUrl + "/mysite/login.aspx");
driver.findElement(By.id("txtUsername")).sendKeys("username");
driver.findElement(By.id("txtPassword")).sendKeys("somepassword");
driver.findElement(By.id("lbLogin")).click();
try {
assertEquals("Invalid User or Password", driver.findElement(By.id("lblError")).getText());
} catch (Error e) {
verificationErrors.append(e.toString());
}
}
@Test
public void testLoginNoUsername() throws Exception {
driver.get(baseUrl + "/mysite/login.aspx");
driver.findElement(By.id("txtUsername")).sendKeys("");
driver.findElement(By.id("txtPassword")).sendKeys("somePassword");
driver.findElement(By.id("lbLogin")).click();
try {
assertEquals("Please fill username and password.", driver.findElement(By.id("lblError")).getText());
} catch (Error e) {
verificationErrors.append(e.toString());
}
}
@Test
public void testLoginNoPassword() throws Exception {
driver.get(baseUrl + "/mysite/login.aspx");
driver.findElement(By.id("txtUsername")).sendKeys("username");
driver.findElement(By.id("txtPassword")).sendKeys("");
driver.findElement(By.id("lbLogin")).click();
try {
assertEquals("Please fill username and password.", driver.findElement(By.id("lblError")).getText());
} catch (Error e) {
verificationErrors.append(e.toString());
}
}
@Test
public void testLoginValid() throws Exception{
//SelectRoleAfterLogin selectRole = SelectRoleAfterLogin();
driver.get(baseUrl + "/mysite/login.aspx");
driver.findElement(By.id("txtUsername")).sendKeys("myUsername");
driver.findElement(By.id("txtPassword")).sendKeys("password");
driver.findElement(By.id("lbLogin")).click();
Thread.sleep(3000);
}
}
THX
答案 0 :(得分:0)
是的,您可以在登录后运行selectcity
您应该将您的第一堂课扩展到第二堂课
在你的Login.java中将它扩展为selectcity java,如下所示
Public class login extends Selectcity {
在您的有效登录后
为selectcity创建一个新实例(如果您正在使用@test,请在其中创建以下内容)
selectcity test = new selectcity()
Once after your valid login do the following
test.(will fetch you the methods available in selectcity.java)
通过这种方式,您可以将一次课程调用到另一个课程。
如果有帮助,请告诉我
更新:
如果public class Login extends **SelectCityAfterLogin**
中的selectcityAfterlogin是你的第二个类名,那么你想创建一个不正确的对象
在您的公共登录类中,请检查您是否正在扩展正确的第二类名称
在@test方法
中@Test
public void testLoginValid() throws Exception{
//SelectRoleAfterLogin selectRole = SelectRoleAfterLogin();
应该是
SelectCityAfterLogin selectrole = new SelectCityAfterLogin()
selectrole.(will fetch you the methods of second city)
如果有帮助,请告诉我。
一个更好的解决方案是创建多个方法而不是多个@test。您可以将这些称为单个@test套件。
答案 1 :(得分:0)
我假设你有2个班级' Login.java'和' SelectCity.java' 如下:
第1课:Login.java
public void invalidLogin (WebDriver driver){
//some operations
}
public void validLogin (WebDriver driver){
//some operations
}
第2课:SelectCity.java
public void selectCity (Webdriver Driver){
//some operations
}
第3课:LoginAndSelectCity.java
public static void main(String args []){
WebDriver driver = new FirefoxDriver();
Login.validLogin(driver);
SelectCity.selectCity(driver);
}
如果所有类都在同一个包中,那么只有它才有效,否则你需要导入包或创建新的子进行类的继承。