在ClickPage类型中方法ClickPage的重复修饰符

时间:2017-07-13 19:04:33

标签: java selenium

我正在尝试采取措施来学习页面对象模型(POM)。这是我的页面类:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.support.PageFactory;

public class ClickPage {

    @FindBy(how=How.XPATH, using="/html/body/div[1]/div/div/div/div/h3[2]/a")
    public WebElement link;

    public  ClickPage(WebDriver driver){
        PageFactory.initElements(driver, this);
    }

    public void navigator(){    
        link.click();
    }
}

但是在构造函数中它抱怨

Duplicate modifier for the method ClickPage in type ClickPage

1 个答案:

答案 0 :(得分:0)

以下是您的问题的答案:

从您的示例代码块中可以看出,您正试图在工作中使用PageFactory通过POM。调用ClickPage类时,页面上的元素已经初始化。接下来,您将再次尝试通过PageFactory.initElements(driver, this);初始化元素。因此错误 Duplicate modifier for the method ClickPage in type ClickPage

这里有一些事情需要解决如下:

  1. 考虑全局声明WebDriver实例。
  2. 为WebDriver实例创建构造函数。
  3. 您的ClickPage班级将如下所示:
  4. ClickPage 类:

    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.support.FindBy;
    import org.openqa.selenium.support.How;
    import org.openqa.selenium.support.PageFactory;
    
    public class ClickPage {
    
        WebDriver driver;
    
        //constructor
        public LoginPageNew(WebDriver ClickPageDriver)
        {
            this.driver=loginDriver;
        }
    
        @FindBy(how=How.XPATH, using="/html/body/div[1]/div/div/div/div/h3[2]/a")
        public WebElement link;
    
        public void navigator(){    
        link.click();
        }
    }
    
    1. 现在,您需要在运行测试时初始化ClickPage页面上的变量。因此,从您的测试类VerifyValidLogin开始,我们将调用initElements()方法,如下所示:
    2. VerifyValidLogin 类:

          @Test (priority=0)
          public void click_a_page()
          {
              //Created Page Object using Page Factory
              ClickPage click_page = PageFactory.initElements(driver, ClickPage.class);
      
              //Call the method
              click_page.navigator();
      
          }
      

      如果这回答你的问题,请告诉我。