我们如何使用@FindBy中的动态String进行选择器

时间:2019-06-24 09:37:19

标签: selenium findby page-factory

我已经将我的Selenium testNG套件与Jenkins构建体集成在一起。 根据构建所基于的环境,触发自动化脚本。我正在使用“ mvn clean test -Denv =“命令将环境信息从Jenkins发送到自动化代码。 我已在脚本中成功使用此值作为环境,以区分不同环境中的数据。

但是,我的一些Xpath取决于环境的不同数据,例如text()='特定于环境的东西'。 我无法在运行时在@FindBy中提供动态字符串,因为此注释不允许这样做。

请提出解决此问题的线索,因为我愿意坚持使用页面工厂方法。

Web Element Repository : 

    @FindBy(how = How.XPATH, using = "//tr/td[text()='Dipali33']")
public WebElement student_UserName_Value;


pom.xml contains:

    <configuration>
<systemPropertyVariables>
<environment>${env}</environment>
</systemPropertyVariables>
</configuration>

Automation code contains logic based on environment:

    this.env = System.getProperty("environment");
if(env='dev'){
    ..........
    .......
} 

Actual- The XPATHS are defined using static String.

Expected- XPATHS should be defined using dynamic String variable at run time something like as as below:

    if(env='dev'){
        @FindBy(how = How.XPATH, using = "//tr/td[text()='"+dev_studentName+"']")
        public WebElement student_UserName_Value;
    }
    else if(env='test'){
        @FindBy(how = How.XPATH, using = "//tr/td[text()='"+test_studentName+"']")
        public WebElement student_UserName_Value;
    }

1 个答案:

答案 0 :(得分:2)

无法将@FindBy与动态xpath一起使用。您需要在方法中构建By.xpath