【问题标题】:In Page Object Model do i have to create webdriver all the time?在页面对象模型中,我是否必须一直创建 webdriver?
【发布时间】:2022-01-10 13:14:11
【问题描述】:

我正在使用刚开始的页面对象模型,我创建了 2 个包,一个是 com.automation.pages,另一个是 com.automation.testcases。 在这两个包中,我为登录页面创建了一个类,它工作正常我正在分享下面的代码。

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;
    }
    
    
}

【问题讨论】:

    标签: selenium selenium-webdriver frameworks pageobjects


    【解决方案1】:

    看来您在 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】:

      请更正您的TaxSetUp 构造函数中的以下行。

      this.driver.ldriver;

      这应该是

      this.driver = driver;

      是的,您必须为您在应用程序中创建的所有页面类传递WebDriver 实例,否则它们会将默认值分配给驱动程序,即null

      【讨论】:

      • 感谢 supputuri 的帮助和时间。我非常感谢你。
      猜你喜欢
      • 2015-09-14
      • 2020-01-02
      • 2019-09-02
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多