Java selenium中带有页面对象工厂的断言
如何使用@FindBy变量的路径/位置作为方法的参数 我的类中有以下@FindBy值Java selenium中带有页面对象工厂的断言,java,selenium,assertions,pageobjects,Java,Selenium,Assertions,Pageobjects,如何使用@FindBy变量的路径/位置作为方法的参数 我的类中有以下@FindBy值 @FindBy(xpath=".//*[@id='HasAnotherSubsidisedQual_container']") @CacheLookup WebElement mSubsidisedQual; 然后我有了一个检查元素是否存在的方法 public boolean isElementPresent(By element){ try { mDriver.findElemen
@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']")));
}
这一切都可以正常工作,但不是通过.xpath指定。。。在断言中,是否有任何方法可以作为参数传入我的@FindBy WebElement msubsidesdqual的路径
非常感谢您不需要再次提供xpath。一旦它被页面工厂初始化,只需将元素作为参数传递
public void checkSmartAndSkilled () {
Assert.assertTrue(isElementPresent(mSubsidisedQual));
}
你刚刚创建了一个错误的方法。你检查元素存在的方式是错误的。但是如果您想这样做,那么您应该做的是重载它,使参数成为您的元素
然后调用该元素(例如单击,或使用其属性,如Enable、Count、Length或Java中可用的任何内容),如果该元素不存在,它将捕获相同的错误。如果它存在,则返回true。不幸的是,此值的可能重复项不起作用。您不能将WebElement传递给需要的参数。Assert.assertTrue(布尔)需要布尔参数。isElementPresent返回一个布尔值。它起作用了。