Java 如何优雅地使用SeleniumWebDriver测试同一网站的不同用户名和密码?
我有以下使用用户名和密码登录Facebook的示例代码Java 如何优雅地使用SeleniumWebDriver测试同一网站的不同用户名和密码?,java,selenium,Java,Selenium,我有以下使用用户名和密码登录Facebook的示例代码 @Test public void fb() { FirefoxProfile ffprofile = new FirefoxProfile(); ffprofile.setPreference("general.useragent.override", "iPhone"); //this will change the user agent which will open mobile browse
@Test
public void fb() {
FirefoxProfile ffprofile = new FirefoxProfile();
ffprofile.setPreference("general.useragent.override", "iPhone"); //this will change the user agent which will open mobile browser
WebDriver driver = new FirefoxDriver(ffprofile);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().setSize(new Dimension(400, 800)); //just to change the window size so that it will look like mobile ;)
driver.get("http://www.fb.com/");
driver.findElement(By.name("email")).sendKeys("user1");
driver.findElement(By.name("pass")).sendKeys("password");
driver.findElement(By.name("login")).click();
}
接下来我还有5个Facebook个人资料,分别是user2、user3、user4、user5和user6。我想使用这些配置文件登录Facebook,并进行一些自动测试
我的问题是,我应该为不同的用户名重新编写上述代码5次以上,还是有其他优雅的方法来实现这一点
提前谢谢 您没有提到您正在使用哪个测试框架,所以
- 如果这是JUnit,则可以使用。它们将允许您使用各种参数运行相同的测试:
@RunWith(Parameterized.class) public class LoginTest { @Parameters public static Collection<Object[]> data() { return Arrays.asList(new Object[][] { { "user1", "password" }, { "user2", "password" } //... }); } private String username, password; public LoginTest(String username, String password) { this.username = username; this.password = password; } @Test public void fb() { // most of it won't change, except: driver.findElement(By.name("email")).sendKeys(username); driver.findElement(By.name("pass")).sendKeys(password); // ... }
顺便说一下:每个类初始化驱动程序一次是一个更好的主意,因为创建配置文件/启动浏览器是一项昂贵的操作,如果您有很多测试,它可能会降低您的速度。在每次测试之后,你也应该考虑<强>日志记录< /强>,这样你的下一个登录是干净的。 你没有提到你使用的是哪个测试框架,所以
- 如果这是JUnit,则可以使用。它们将允许您使用各种参数运行相同的测试:
@RunWith(Parameterized.class) public class LoginTest { @Parameters public static Collection<Object[]> data() { return Arrays.asList(new Object[][] { { "user1", "password" }, { "user2", "password" } //... }); } private String username, password; public LoginTest(String username, String password) { this.username = username; this.password = password; } @Test public void fb() { // most of it won't change, except: driver.findElement(By.name("email")).sendKeys(username); driver.findElement(By.name("pass")).sendKeys(password); // ... }
顺便说一下:每个类初始化驱动程序一次是一个更好的主意,因为创建配置文件/启动浏览器是一项昂贵的操作,如果您有很多测试,它可能会降低您的速度。在每次测试之后,您也应该考虑<强>日志记录< /强>,以便下次登录是干净的。基于关键字的测试。您将对给定的一组关键字(在本例中为用户/密码对)重复测试。您的函数需要将这些值作为参数:
public void fb(字符串用户,字符串密码){…sendKeys(用户)…sendKeys(密码)…
基于关键字的测试。您需要对给定的关键字集(在本例中为用户/密码对)重复测试。您的函数需要将这些值作为参数:public void fb(字符串用户,字符串密码){…sendKeys(用户)…sendKeys(密码)..
我在这里使用JUnit。但是,您上次建议的方法似乎解决了我的问题。谢谢!我在这里使用JUnit。但是,您上次建议的方法似乎解决了我的问题。谢谢!