在页面对象模型中,我是否必须一直创建 webdriver?
In Page Object Model do i have to create webdriver all the time?
我正在使用我刚开始使用的页面对象模型,我创建了 2 个包,一个是 com.automation.pages,另一个是 com.automation.testcases。
在这两个包中,我为登录页面创建了一个 class 它工作正常我正在分享下面的代码。
package com.automation.pages;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
public class LoginPage {
WebDriver driver;
public LoginPage(WebDriver ldriver)
{
this.driver=ldriver;
}
@FindBy (xpath="//input[@name='email'] ") WebElement email;
@FindBy (xpath="//input[@name='password']") WebElement password;
@FindBy (xpath="//body/div[2]/div[2]/div[2]/form[1]/div[3]/div[2]/button[1]") WebElement loginbutton;
public void logintoLabaiik(String email1, String password1 )
{
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
email.sendKeys(email1);
password.sendKeys(password1);
loginbutton.click();
}
}
我在处理新页面时遇到的问题是当我创建一个驱动程序时,当我使用 ldriver 时它会抛出一个错误,当我替换“l”时它仍然会抛出错误。请解决我的问题。
package com.automation.pages;
import org.openqa.selenium.WebDriver;
public class TaxSetup {
WebDriver driver;
public TaxSetup(WebDriver driver)
{
this.driver.ldriver;
}
}
请更正 TaxSetUp
构造函数中的以下行。
this.driver.ldriver;
这应该是
this.driver = driver;
是的,您必须为您作为应用程序的一部分创建的所有页面 类 传递 WebDriver
实例,否则它们将为驱动程序分配默认值 null
.
看起来你在 TaxSetup
构造函数中有问题。
这应该有效。
public TaxSetup(WebDriver driver){
this.driver=driver;
}
看看如何创建 2 个页面对象 类 并在测试中使用它们:
登录页面
public class LoginPage {
final WebDriver driver;
public LoginPage(WebDriver driver){
this.driver=driver;
}
// page implementation
}
税收设置
public class TaxSetup {
final WebDriver driver;
public TaxSetup(WebDriver driver){
this.driver=driver;
}
// page implementation
}
如何在测试中使用
public class SomeTest {
WebDriver driver;
LoginPage loginPage;
TaxSetup taxSetupPage;
@BeforeClass
public void initDriverAndPages() {
driver = ... // e.g. new ChromeDriver()
loginPage = PageFactory.initElements(driver, LoginPage.class);
taxSetupPage = PageFactory.initElements(driver, TaxSetup.class);
}
@Test
public void someTest() {
// implement test using loginPage, taxSetupPage as you like
}
@AfterClass
public void quitDriver() {
driver.quit();
}
}
我正在使用我刚开始使用的页面对象模型,我创建了 2 个包,一个是 com.automation.pages,另一个是 com.automation.testcases。 在这两个包中,我为登录页面创建了一个 class 它工作正常我正在分享下面的代码。
package com.automation.pages;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
public class LoginPage {
WebDriver driver;
public LoginPage(WebDriver ldriver)
{
this.driver=ldriver;
}
@FindBy (xpath="//input[@name='email'] ") WebElement email;
@FindBy (xpath="//input[@name='password']") WebElement password;
@FindBy (xpath="//body/div[2]/div[2]/div[2]/form[1]/div[3]/div[2]/button[1]") WebElement loginbutton;
public void logintoLabaiik(String email1, String password1 )
{
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
email.sendKeys(email1);
password.sendKeys(password1);
loginbutton.click();
}
}
我在处理新页面时遇到的问题是当我创建一个驱动程序时,当我使用 ldriver 时它会抛出一个错误,当我替换“l”时它仍然会抛出错误。请解决我的问题。
package com.automation.pages;
import org.openqa.selenium.WebDriver;
public class TaxSetup {
WebDriver driver;
public TaxSetup(WebDriver driver)
{
this.driver.ldriver;
}
}
请更正 TaxSetUp
构造函数中的以下行。
this.driver.ldriver;
这应该是
this.driver = driver;
是的,您必须为您作为应用程序的一部分创建的所有页面 类 传递 WebDriver
实例,否则它们将为驱动程序分配默认值 null
.
看起来你在 TaxSetup
构造函数中有问题。
这应该有效。
public TaxSetup(WebDriver driver){
this.driver=driver;
}
看看如何创建 2 个页面对象 类 并在测试中使用它们:
登录页面
public class LoginPage {
final WebDriver driver;
public LoginPage(WebDriver driver){
this.driver=driver;
}
// page implementation
}
税收设置
public class TaxSetup {
final WebDriver driver;
public TaxSetup(WebDriver driver){
this.driver=driver;
}
// page implementation
}
如何在测试中使用
public class SomeTest {
WebDriver driver;
LoginPage loginPage;
TaxSetup taxSetupPage;
@BeforeClass
public void initDriverAndPages() {
driver = ... // e.g. new ChromeDriver()
loginPage = PageFactory.initElements(driver, LoginPage.class);
taxSetupPage = PageFactory.initElements(driver, TaxSetup.class);
}
@Test
public void someTest() {
// implement test using loginPage, taxSetupPage as you like
}
@AfterClass
public void quitDriver() {
driver.quit();
}
}