如何使用@FindBy变量的路径/位置作为方法的参数?
我班上有以下@FindBy值...
@FindBy(xpath=".//*[@id='HasAnotherSubsidisedQual_container']")
@CacheLookup WebElement mSubsidisedQual;
然后我有一个检查元素是否存在的方法......
public boolean isElementPresent(By element){
try {
mDriver.findElement(element);
return true;
}
catch (org.openqa.selenium.NoSuchElementException e){
return false;
}
}
然后我在另一个包含断言的方法中使用该方法
public void checkSmartAndSkilled () {
Assert.assertTrue(isElementPresent(By.xpath(".//*[@id='HasAnotherSubsidisedQual_container']")));
}
这一切都运行正常,但是在断言中没有指定By.xpath ...等,无论如何都要作为参数传入我的@FindBy WebElement mSubsidisedQual的路径?
非常感谢
答案 0 :(得分:0)
您无需再次提供xpath。一旦它被Page Factory初始化,只需将元素作为参数传递。
public void checkSmartAndSkilled () {
Assert.assertTrue(isElementPresent(mSubsidisedQual));
}
答案 1 :(得分:0)
你刚刚创建了一个错误的方法。而你检查元素存在的方式是错误的。但是如果你想这样做,那么你应该做的就是重载它,以便参数是你的元素。
然后调用该元素(例如,单击,或使用其属性,如Enable,或Count或Length或Java中可用的任何内容),如果该元素不存在,则会捕获相同的错误。如果存在则返回true。