Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java selenium中带有页面对象工厂的断言_Java_Selenium_Assertions_Pageobjects - Fatal编程技术网

Java selenium中带有页面对象工厂的断言

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变量的路径/位置作为方法的参数

我的类中有以下@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']")));
}
这一切都可以正常工作,但不是通过.xpath指定。。。在断言中,是否有任何方法可以作为参数传入我的@FindBy WebElement msubsidesdqual的路径


非常感谢

您不需要再次提供xpath。一旦它被页面工厂初始化,只需将元素作为参数传递

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

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


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

不幸的是,此值的可能重复项不起作用。您不能将WebElement传递给需要的参数。Assert.assertTrue(布尔)需要布尔参数。isElementPresent返回一个布尔值。它起作用了。