哪种方法更快?从Page Factory中的Java类或外部文件(JSON)访问定位器

时间:2019-03-03 15:26:11

标签: automation

框架成分-黄瓜和硒(Java),页面对象模型和页面工厂。

目前,我正在按照以下方式编写定位符-

Class-> HomePage.java

@FindAll({  
        @FindBy(css = HomePageLocators.factoryBouncePopUp),
        @FindBy(xpath = HomePageLocators.outletBouncePopUp),
    }) public List<WebElement> bouncePopUp;

Class-> HomePageLocators.java

    public final static String factoryBouncePopUp = "div[id*=bx-creative] > div > a";
    public final static String outletBouncePopUp = "//button[contains(.,'NO THANKS, I PREFER TO PAY FULL PRICE')]";

我们知道,我们可以将定位符作为常量传递给@FindBy批注。因此,我开始在Java类中写下定位器。事情进展顺利。

但是我一直在想在一个外部文件中写一个定位器,说json,特别是当定位器数量巨大时,比如说600,维护json中的定位器会更容易。我遇到了下面的链接,了解如何可以从页面工厂中的json访问定位器。

https://rationaleemotions.wordpress.com/2016/06/27/pagefactory-page-objects-and-locators-from-an-external-file/

我想从绩效的角度了解这个社区的意见,哪种方法是可取的。如果性能会成为问题,我不会考虑将JSON与页面工厂一起使用。

如果Json可以在性能竞赛中获胜,那么除了上述链接之外,任何人都可以建议我在页面工厂中实现json的任何来源。

任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果您要在这种情况下访问定位器值,则java中的Interface是最佳选择。您无需与任何其他文件类型进行交互。在interface中,您可以直接获取数据,并且它也是静态的,最终您可以只能将其命名为Interface name.LocatorName。这不会影响您的表现。