Java 要检查是否显示的资产虚假报表

Java 要检查是否显示的资产虚假报表,java,selenium-webdriver,Java,Selenium Webdriver,我正在尝试用selenium编写一个测试。我已经在页面对象包中定义了我的所有webelements 我使用S.getColumn()调用测试的webelement getcolumn()获取web表中列的webelement By column = By.xpath("//id[@type='column']"); .. .. public WebElement getcolumn(){ return driver.findElement(column) } 我需要检查

我正在尝试用selenium编写一个测试。我已经在页面对象包中定义了我的所有webelements

我使用S.getColumn()调用测试的webelement

getcolumn()获取web表中列的webelement

  By column = By.xpath("//id[@type='column']");
  ..
  ..
  public WebElement getcolumn(){
  return driver.findElement(column)
  }
我需要检查webelement是否显示在我的测试中

我正在使用:
Assert.assertFalse(S.getColumn().isDisplayed())


但这是一个错误。如何正确编写它

断言元素不存在在selenium中并不真正起作用,通常会出现异常,因为它试图与页面上不存在的元素交互。您还没有共享完整的代码或您得到的实际错误,但我猜您很可能最终会遇到一个
NoTouchElementException
,如果是这种情况,您需要将断言包装在一个try/catch中以查找该异常。e、 g

try {
        Assert.assertFalse(S.getColumn().isDisplayed())
    } catch(NoSuchElementException e) {
        LOG.info("Element not displayed as expected")
    }

这样,如果元素存在,就会出现断言失败,因为它希望它为false。如果元素不存在,异常将使您陷入困境,您可以只记录/打印您想要的任何消息,并且测试可以继续进行。您的代码有多个问题

首先是一个纯粹的Java问题。您的方法
getColumn()
返回
void
。这意味着当您调用
S.getColumn()
时,它将始终为
null
。您的方法可能是:

public WebElement getColumn() {
    return driver.findElement(column);
}
其次是硒问题。当一个元素未显示-隐藏-这可以通过几种不同的方式实现:

一种方法是对元素属性(如不透明度)进行操纵,使其真正不显示。在这种情况下,测试
.isDisplayed()
通常就足够了

另一种方法是可以从DOM中删除元素。在这种情况下,测试
.isDisplayed()
将抛出
NoTouchElementException
。要在这种情况下进行测试,可以使用
try..catch
块,类似于:

boolean isDisplayed;
try {
    isDisplayed = S.getColumn().isDisplayed();
} catch(NoSuchElementException ignore) {
    isDisplayed = false;
} finally {
    Assert.assertTrue("element is NOT displayed!",
        isDisplayed)
}
清洁剂(首选?)的方法是检查这些元素有多少。您必须将getColumn方法更改为:

public List<WebElement> getColumns() {
    return driver.findElements(column);
    // note the plural "findElements"
}

什么是错误?我们无法更正您尚未共享的代码。请编辑您的问题并添加相关代码,例如
S.getColumn()
以及其他方法。您还需要添加错误。你真的需要花时间简化你的代码,调查缩小问题范围,然后用你发现的更新你的问题。另外,花一分钟的时间正确格式化你的问题,特别是代码。如果您不知道如何执行此操作,请参阅格式帮助。您可以轻松地使用类似于
driver.findElements(…).size()==0
的方法来验证元素是否不存在。
Assert.assertTrue("element is NOT displayed!",
    S.getColumns().size() > 0);