你好我是Selenium和java的新手,我需要基类的帮助。我有基础设置驱动程序浏览器的方法及其关闭。问题是,当我从main调用这些方法时,总是调用web驱动程序并且浏览器多次打开。如果我不想让代码重复,最佳做法是什么 我想要一个好的项目结构。非常感谢。
主:
public class Main extends TestBase {
public static void main(String[] args) throws InterruptedException, ClassNotFoundException, SQLException {
LoginTest LoginTest = new LoginTest();
LogofTest LogofTest = new LogofTest();
TestBase TestBase = new TestBase();
LoginTest.setUpBeforeTestMethod();
LoginTest.loginAsAdmin();
LogofTest.logofAsAdmin();
LoginTest.tearDownAfterTestClass();
}
}
TestBase:
public class TestBase {
String a = System.setProperty("webdriver.chrome.driver",
"path");
WebDriver driver = new ChromeDriver();
protected WebDriver setUpBeforeTestClass() {
return driver;
}
protected void setUpBeforeTestMethod() {
driver.get("website");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
protected void tearDownAfterTestClass() {
driver.close();
}}
LoginTest:
public class LoginTest extends TestBase {
public void login() throws InterruptedException {
WebElement username = driver.findElement(By.name("username"));
username.sendKeys("username");
}
}
主要焦点是我不想再写 WebDriver driver = new ChromeDriver(); driver.get("网站&#34); System.setProperty(" webdriver.chrome," path"); 用于函数或类中的每个测试。所以我想创建基类并继承它。
答案 0 :(得分:1)
示例JUnit
使用页面对象模型
public class TestBase
{
private String a = System.setProperty("webdriver.chrome.driver", "path");
protected WebDriver driver;
@Before //Before each test case, use BeforeClass for before each test class
public static void setUpBeforeTestCase() {
driver = new ChromeDriver();
driver.get("website");
}
@After
public static void tearDownAfterTestCase() {
driver.Quit(); //driver.Close() closes the window, but doesn't properly dispose of the driver
}
}
进行测试
<强> TestBase 强>
public class LoginTest extends TestBase {
@Test
public void loginAndOutAsAdmin(){
LoginPage loginPage = PageFactory.initElements(driver, LoginPage.class);
LandingPage landingPage = loginPage.login("adminUser", "adminPassword");
landingPage.logout();
//Do some sort of assert here that you are logged out
}
}
<强> LoginTest 强>:
public class BasePage
{
protected WebDriver driver;
//Other common stuff your Page Objects will do, like wait for an element
}
<强>的BasePage 强>
public class LoginPage extends BasePage
{
@FindBy(how = How.NAME, using = "username")
private WebElement usernameBox;
//something for passwordBox and loginButton
public LoginPage(WebDriver currentDriver)
{
driver = currentDriver;
}
public LandingPage login(String username, String password)
{
usernameBox.sendKeys(username);
passwordBox.sendKeys(password);
loginButton.click();
return PageFactory.initElements(driver, LandingPage.class);
}
}
<强> LoginPage 强>
for /f tokens^=* %i in ('robocopy /l /e /xa:R %temp% "nothing ..//" /njh /ndl /ns /nc /pf /njs')do @echo %i
我还没有尝试编译这个,但这是基本的想法。我会让你填写详细信息。