Как я могу избежать нескольких переменных xpath в Selenium? - PullRequest
0 голосов
/ 24 января 2020

я определяю 2 переменные в Selenium следующим образом:

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

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

мне нужно передать разные значения в этих переменных для разных тестов, например, "$ 12", но я не хочу создавать больше переменных в объекте моей страницы с разными ценами. что является хорошим решением для этого?

1 Ответ

1 голос
/ 24 января 2020

Нет способа передать parameter в @FindBy аннотацию. Но вы можете написать собственную функцию для получения webelement на основе спецификаций c value и tag. поэтому вам не нужно каждый раз создавать отдельный элемент. Пожалуйста, посмотрите на функцию ниже.

   public  WebElement getWebElementForSpecificText(String tagName, String text) {
        String formXpath= ".//"+tagName+"[contains(text(),'"+text+"')]";
        return driver.findElement(By.xpath(formXpath));
    }

Ю может вызвать эту функцию, как указано ниже:

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