使用Page Object Factory在selenium中断言

时间:2016-03-29 15:24:26

标签: java selenium assertions pageobjects

如何使用@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的路径?

非常感谢

2 个答案:

答案 0 :(得分:0)

您无需再次提供xpath。一旦它被Page Factory初始化,只需将元素作为参数传递。

public void checkSmartAndSkilled () {
    Assert.assertTrue(isElementPresent(mSubsidisedQual));
}

答案 1 :(得分:0)

你刚刚创建了一个错误的方法。而你检查元素存在的方式是错误的。但是如果你想这样做,那么你应该做的就是重载它,以便参数是你的元素。

然后调用该元素(例如,单击,或使用其属性,如Enable,或Count或Length或Java中可用的任何内容),如果该元素不存在,则会捕获相同的错误。如果存在则返回true。