【问题标题】:How to check if list element is present or not如何检查列表元素是否存在
【发布时间】:2019-10-04 11:15:42
【问题描述】:

我有页面对象我想知道如果没有元素被显示或不存在如何编写一个方法通过测试用例,否则继续测试。

我正在尝试弄清楚,或者我们应该尝试捕获或断言True。

@AndroidFindBy(id = "lakjdfaj");
List<MobileElement> texts;

public boolean doesNotPresent() {
Boolean notDisplayed = texts.isEmpty();
if(notDisplayed){
return true;
} else {
return false; 
}

【问题讨论】:

  • 那么,你在运行这个的时候会遇到什么错误吗?
  • 你会用这个方法还是assertTrue方法更好?我想知道如何做得更好?
  • 它基本上做同样的事情。不过,有一个明确的断言语句会使其更具可读性。
  • 我想知道您的测试用例的其余部分是什么样的,因为我认为答案应该取决于此。我很好奇在什么情况下,如果没有元素存在,您希望通过测试,但如果存在,则继续执行一些测试。
  • 如果没有元素存在测试应该通过完成但如果有元素存在测试应该继续进行不会失败。当没有元素时,此测试继续进行下一步。

标签: selenium testing appium


【解决方案1】:
@AndroidFindBy(id = "lakjdfaj");
List<MobileElement> texts;

// 验证什么时候没有元素显示

@Test      
public boolean verifyEmptyTexts() {
assertEquals(0,texts.size());
}

// 验证何时显示元素,此处验证第二个元素

@Test 
public boolean verifyTexts() {
assertEquals("textToVerify",texts.get(1).getText());
}

【讨论】:

  • 总是,总是,总是在你的断言中添加一条消息,表明你正在验证什么。这样,当您获得结果时,您会看到它失败了,并且更好地了解您正在检查的内容,例如assertEquals(0, texts.size(), "Verify that the texts elements are not on the page"); 或其他。
  • 我同意@JeffC 100%,事实上,如果您不添加文本,您的控制台或报告将仅列出“断言错误”而不是解释预期错误的有意义的消息..
  • 这样的事情是唯一对我有意义的解决方案。您的问题试图测试两个互斥的预期结果,最好写成两个测试,每个测试都有一个预期结果。
  • @JeffC 我相信你提出的观点是正确的,我错过了这一点,因为我只是专注于提问者提供的问题陈述,是的,在断言语句中编写消息以提高可读性是一个好点在断言失败的情况下记录日志,感谢您指出。
猜你喜欢
  • 1970-01-01
  • 2011-08-02
  • 2018-01-10
  • 2021-12-17
  • 1970-01-01
  • 2018-01-31
  • 2021-08-19
  • 1970-01-01
  • 2022-01-21
相关资源
最近更新 更多