首页 > 解决方案 > 如何避免在 Selenium 中有多个 xpath 变量?

问题描述

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

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

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

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

标签: seleniumselenium-webdriverxpathwebdriverfindby

解决方案


没有办法传递parameter@FindBy注释。但是你也可以编写一个自定义函数来获取webelement基于特定valuetag。所以你不需要每次都创建单独的元素。请看下面的功能。

   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");

推荐阅读