java@Findby与利弊之争?
我创建了一个PageFactory框架,并开始使用@FindBy
,但我对它知之甚少,而且读到这是一种高级方法
我意识到ExpectedConditions.presenceOfElementLocated
与WebElements
不起作用。所以我不得不使用不同的.visibilityOf
,有时它不会对我的元素执行操作
所以我把它改成了By方法,现在定位器又能很好地工作了
By
类在存储元素方面是否更健壮
哪一个更不容易出现问题@Findby
或By
# 1 楼答案
我只举了两个例子。第一个带注释,第二个不带注释。 有区别。如果页面的构造函数被调用
PageFactory.initElements(driver,this);
,它会检查页面上的所有元素。如果其中一些元素不存在,则无论给定测试是否需要该元素,它都会失败(动态页面)。下一个问题是测试失败。它不容易识别出失败的地方。它显示了页面,但没有堆栈跟踪的确切位置。 在第二个示例中,您可以很容易地找到失败的方法(位置)。此外,未调用且可能缺失的元素不会导致测试失败,除非调用了缺失/错误的元素带注释
没有
在第一个例子中,它更容易被调用
而在第二个例子中: