@FindBy()和driver.findElement()的性能比较

时间:2018-05-07 05:39:04

标签: selenium

我正在使用selenium框架来自动化web应用程序,其中通常使用driver.findElement()。但我得到的建议是@FindBy()比driver.findElement()工作得更快。建议我哪个更好用?

1 个答案:

答案 0 :(得分:2)

当代码 - WebElements运行时,它为所有用@FindBy(甚至@FindBys和@FindAll)注释的字段创建Proxy个对象。所以最初没有搜索element.sendKeys(...)

然后,如果运行driver.findElement(...)之类的内容,则在sendKeys()运行之前使用sendKeys()搜索实际的WebElement。然后,如果运行相同的CacheLookup代码,则会再次找到该元素。

但是如果将PageObjectModel注释添加到字段中,则不会执行第二次查找,但会从缓存中返回元素。因此有一个性能提升。但问题发生在javascript或ajax重页面,陈旧的元素异常可以显示出来。

对于任何非平凡的应用程序测试,请使用CacheLookUp框架。即使您不使用Exception in thread "main" org.hibernate.MappingException: Could not determine type for: java.util.List, at table: Company, for columns: [org.hibernate.mapping.Column(person)] at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:336) at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:310) at org.hibernate.mapping.Property.isValid(Property.java:241) at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:496) at org.hibernate.mapping.RootClass.validate(RootClass.java:270) at org.hibernate.cfg.Configuration.validate(Configuration.java:1358) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1849) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1928) at Rajat.Practice1.Main.main(Main.java:24) 注释,也可以使用findElements和定位器使事情井然有序而不会乱七八糟。