存储定位器的最佳方式

TDH*_*DHM 3 java selenium pageobjects selenium-webdriver

我正在关注Selenium自动化的页面对象设计模式,我可以猜测很多人将定位器存储在.properties文件中并通过代码访问它们.将定位器放在不同的位置似乎很棒.

既然,我还没有参与任何关于Selenium自动化的大项目,我想知道关于跟随的想法,以便我可以避免将来可能出现的问题:

  1. 在大型项目中存储属性文件中的定位器是否有用(测试用​​例超过1000个左右)?

    a)如果对大型项目没有帮助,那么使我们不在属性文件中存储定位器的困难是什么?

    b)如果它有用,如果采取了哪些预防措施可以使工作更轻松?

  2. 与属性文件相比,在页面类中存储定位器本身是最好的方法吗?

Mas*_*ave 7

我认为将文件存储在页面类本身中.从属性文件加载会产生额外的开销或解析大文件.维护这样一个文件也会更难,即使有良好的工具支持,你也会被迫使用CTRL + F.

即使在更概念的层面上,它也是错误的.适合存储在属性文件中的是可配置参数,尤其是那些适合在运行时调整的参数.

定位器没有这种性质.如果您正在寻求的好处是在一个中心位置声明,您应该使用专用的常量类,这将为您提供更好的重构选项.


Sai*_*fur 5

我绝对同意@Master Slave。的主要目的selenium是使UI测试更容易。存储locators在property文件中既麻烦又额外开销加上重构的噩梦。PageObject流行的主要原因之一是因为它能够以非常直观的方式映射元素

@FindBy(name="q")
private WebElement searchField;

@FindBy(name="btnG")
private WebElement searchButton;
Run Code Online (Sandbox Code Playgroud)

它不仅更具可读性,而且在重构和调试的情况下也更容易。而且,当页面上出现问题或更改时,您可以更改一个已知的位置,并且您知道它在哪里!