在Selenide / Selenium模板定位器的正确方法是什么?

时间:2017-02-21 19:46:04

标签: java unit-testing selenium uitest selenide

我正在尝试在UI测试中使用Page Objects模式。许多示例假设在类字段中保存By(Locator)。其他建议保存WebElement(或SelenideElement,如果您使用的是Selenide)。虽然两者都适用于硬编码定位器,但我不知道如何将它用于路径包含变量的定位器。

例如,如何在类字段中保存此定位器?

public SelenideElement getTotal(String type) {
   return $(By.xpath("//h4[contains(text(), '"+ type +"')]");
}

2 个答案:

答案 0 :(得分:1)

我认为你的解决方案是正确的。

我通常将它们放在我的PageObject顶部,与其他选择器一样,就像你所做的那样。只需使用该方法,就像使用其中一个SelenideElement字段一样。类似的东西:

private SelenideElement getTotalElementByType(String type) {
    return $(By.xpath("//h4[contains(text(), '"+ type +"')]");
}

我可以使它privateprotected,因为使用页面对象模式,您的测试脚本不应该知道{{1在页面对象上。

您可公开访问的方法是这样的:

WebElements

如果您想要与元素进行互动而不是获取值,则会返回您希望转到的 PageObject ,以跟随 POPattern 。 :)

答案 1 :(得分:0)

您实际上不需要将定位器保存到类字段。 Page Object不必声明类字段中的所有元素。 Page Object是一个OBJECT,意味着它必须提供METHODs来操作它。

所以,你的解决方案是理想的。 :)