如何在Selenium中正确实现PageFactory注释?

时间:2018-02-08 13:38:56

标签: java selenium intellij-idea cucumber page-factory

我要做的是:

我目前正在将我的Selenium(Java)框架从标准页面对象模型+黄瓜设置迁移到PageFactory +黄瓜设置。

这是我迄今为止尝试使其发挥作用的目的:

  • 我发起了我的PageFactory。
  • 我导入了所有必需的包和依赖项。
  • 我检查了多个在线教程,以确保我有权利 语法。

我遇到的问题:

我的IDEA(IntelliJ)一直给我错误的@FindBy注释,因为它没有编译。

当我将鼠标悬停在我的@FindBy注释上时,它告诉我" @FindBy不适用于方法"

当我尝试运行我的测试时,它会在每次出现@FindBy注释时给出以下错误。 "注释类型不适用于此类声明"

我的问题的代码是:

    package pageObjects;

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

public class AssociatedAlerts {


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

    @FindBy(css = "#Rabo_SelectedBatchSLTransactionrow0 > * > [type = 'checkbox']")
    public WebElement firstAlertCheckboxSelected();
}

我必须遗漏一些简单的东西,但我似乎无法发现它。 任何帮助将不胜感激。

提前致谢。

1 个答案:

答案 0 :(得分:3)

语法错误:

    @FindBy(css = "#Rabo_SelectedBatchSLTransactionrow0 > * > [type = 'checkbox']")
    public WebElement firstAlertCheckboxSelected();

firstAlerchCheckboxSelected不是方法。它是一个变量。

将其更改为:

    @FindBy(css = "#Rabo_SelectedBatchSLTransactionrow0 > * > [type = 'checkbox']")
    public WebElement firstAlertCheckboxSelected;