我正在使用selenium框架来自动化web应用程序,其中通常使用driver.findElement()。但我得到的建议是@FindBy()比driver.findElement()工作得更快。建议我哪个更好用?
答案 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和定位器使事情井然有序而不会乱七八糟。