【问题标题】:How do I correctly implement PageFactory annotations within Selenium?如何在 Selenium 中正确实现 PageFactory 注释?
【发布时间】:2018-07-19 02:28:37
【问题描述】:

我想做的事:

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

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

  • 我启动了我的 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();
}

我一定错过了一些简单的东西,但我似乎无法发现它。 任何帮助将不胜感激。

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    你的语法有错误:

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

    firstAlerchCheckboxSelected 不是一种方法。这是一个变量。

    改成:

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

    【讨论】:

    • 伟大的收获(+1),应该钉住OP。
    • 非常感谢!它现在就像一个魅力。也感谢你告诉我背后的原因。经验教训。
    • @Ceesiebird 很高兴我能帮上忙 :) 您提供了非常有用的代码示例。编码愉快!
    • @RafałLaskowski 所以假设有时我希望为我的 WebElement 提供一些参数,我通常会在方法末尾的 () 中定义这些参数。鉴于上述代码示例,我将如何进行设置?
    • @Ceesiebird 举个例子,因为它太抽象了:)
    猜你喜欢
    • 2011-08-25
    • 2021-10-16
    • 2017-01-24
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多