【问题标题】:How can I avoid having multiple xpath variables in Selenium?如何避免在 Selenium 中有多个 xpath 变量?
【发布时间】:2020-01-24 11:56:17
【问题描述】:
我在 Selenium 中定义 2 个变量,如下所示:
@FindBy(xpath = "//span[contains(text(),'€11')]")
private WebElement singleTicket;
@FindBy(xpath = "//span[contains(text(),'€19')]")
private WebElement returnTicket;`
我需要在这些变量中为不同的测试传递不同的值,例如“$12”,但我不想在我的页面对象中创建更多具有不同价格的变量。有什么好的解决方案?
【问题讨论】:
标签:
selenium
selenium-webdriver
xpath
webdriver
findby
【解决方案1】:
没有办法将parameter 传递给@FindBy 注释。但是您也可以编写一个自定义函数来根据特定的value 和tag 获取webelement。所以你不需要每次都创建单独的元素。请看下面的功能。
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");