如何避免在Selenium中使用多个xpath变量?

如何避免在Selenium中使用多个xpath变量?,selenium,selenium-webdriver,xpath,webdriver,findby,Selenium,Selenium Webdriver,Xpath,Webdriver,Findby,我在Selenium中定义了两个变量,如下所示: @FindBy(xpath = "//span[contains(text(),'€11')]") private WebElement singleTicket; @FindBy(xpath = "//span[contains(text(),'€19')]") private WebElement returnTicket;` 我需要为不同的测试传递这些变量中的不同值,例如“$12”,但我不想在我的页面对象中创建更多具有不

我在Selenium中定义了两个变量,如下所示:

@FindBy(xpath = "//span[contains(text(),'€11')]")
    private WebElement singleTicket;

@FindBy(xpath = "//span[contains(text(),'€19')]")
    private WebElement returnTicket;`

我需要为不同的测试传递这些变量中的不同值,例如“$12”,但我不想在我的页面对象中创建更多具有不同价格的变量。什么是好的解决方案?

无法将
参数
传递给
@FindBy
注释。但是您也可以编写一个自定义函数,根据特定的
值和
标记来获取
webelement
。所以您不需要每次都创建单独的元素。请看一下下面的函数

   public  WebElement getWebElementForSpecificText(String tagName, String text) {
        String formXpath= ".//"+tagName+"[contains(text(),'"+text+"')]";
        return driver.findElement(By.xpath(formXpath));
    }
Yu可以调用此函数,如下所述:

getWebElementForSpecificText("span", "€11");
getWebElementForSpecificText("span", "€12");
getWebElementForSpecificText("span", "€19");