当前位置: 首页 > 面试题库 >

通过Selenium WebDriver验证列表元素

傅经业
2023-03-14
问题内容
WebElement select = myD.findElement(By.xpath("//*[@id='custfoodtable']/tbody/tr[2]/td/div/select"));
List<WebElement> allOptions = select.findElements(By.tagName("option"));
for (WebElement option : allOptions) {
    System.out.println(String.format("Value is: %s", option.getAttribute("value")));
    option.click();
    Object vaLue = "Gram";
    if (option.getAttribute("value").equals(vaLue)) {
        System.out.println("Pass");
    } else {
        System.out.println("fail");
    }
}

我可以验证列表中的一个元素,但是下拉菜单中有20个元素需要验证,我不想使用上述逻辑20次。有没有更简单的方法可以做到?


问题答案:

不要使用for-each构造。仅在对单个Iterable/数组进行迭代时有用。您需要同时遍历List<WebElement>和数组。

// assert that the number of found <option> elements matches the expectations
assertEquals(exp.length, allOptions.size());
// assert that the value of every <option> element equals the expected value
for (int i = 0; i < exp.length; i++) {
    assertEquals(exp[i], allOptions.get(i).getAttribute("value"));
}

OP稍微改变了他的问题后进行编辑:

假设您有一组期望值,则可以执行以下操作:

String[] expected = {"GRAM", "OUNCE", "POUND", "MILLIMETER", "TSP", "TBSP", "FLUID_OUNCE"};
List<WebElement> allOptions = select.findElements(By.tagName("option"));

// make sure you found the right number of elements
if (expected.length != allOptions.size()) {
    System.out.println("fail, wrong number of elements found");
}
// make sure that the value of every <option> element equals the expected value
for (int i = 0; i < expected.length; i++) {
    String optionValue = allOptions.get(i).getAttribute("value");
    if (optionValue.equals(expected[i])) {
        System.out.println("passed on: " + optionValue);
    } else {
        System.out.println("failed on: " + optionValue);
    }
}

这段代码实质上完成了我的第一个代码。唯一的区别是,现在您手动进行工作并打印结果。

以前,我使用了JUnit框架类中的assertEquals()静态方法Assert。该框架是编写Java测试的实际标准,assertEquals()方法家族是验证程序结果的标准方法。它们确保传递给方法的参数相等,如果不相等,则抛出AssertionError

无论如何,您也可以手动进行操作,也没有问题。



 类似资料:
  • 我正在努力定义JSR303验证规则,即重新定义容器bean的默认组。 我想验证容器bean的大小,当且仅当: def属性有效 使用elem集合的任何元素bean都没有验证错误 如果我使用默认组验证容器: 即使内部元素bean存在验证错误,也会触发大小验证器。 如果我从容器类中删除@GroupSequence(跳过为容器重新定义默认组),并将自己的GroupSequence定义为: 然后使用AllV

  • 本文向大家介绍jquery 表单验证之通过 class验证表单不为空,包括了jquery 表单验证之通过 class验证表单不为空的使用技巧和注意事项,需要的朋友参考一下 在开发系统时,往往都有某些表单数据为必填项,若用jQuery通过ID去验证,不仅会影响效率,还会有所遗漏,不易于后期维护。 本章将介绍如何利用jQuery,通过为表单配置class进行统一验证。(ID一个页面只可以使用一次;cl

  • 问题内容: 你可以在模板方面知道当前用户是否已通过身份验证: 但是我没有找到获取经过身份验证的用户列表的方法。 问题答案: 与rz的答案一起,你可以查询未到期的会话模型,然后将会话数据转换为用户。一旦知道了,就可以将其转换为模板标记,该标记可以在任何给定页面上呈现列表。 (这都是未经测试的,但希望将接近工作)。 提取所有已登录的用户… 使用此功能,你可以制作一个简单的包含模板标签… 然后,你可以在

  • 问题内容: 我的网站上有一个选择控件。我正在使用页面对象与页面进行交互。如果我这样做(在我的课程下的前两行和我的方法中) 它以空指针失败。我也尝试了没有。 现在,如果我在我的方法中执行此操作,则一切正常,然后选择正确的项目 这是该控件的实际网页摘要(已编辑以保护无辜者) 让我说我可以解决我的问题, 但是 我不明白为什么“ 正常 ”路径无法正常工作。 问题答案: 那是因为该类具有以下构造函数: 见J

  • 问题内容: 我想知道是否有一种更快,更省时的方法来遍历元组列表,找到合适的匹配项。我要做的是: 根据列表中项目的数量,此代码可能需要花费一些时间才能执行。我敢肯定有更好的方法可以做到这一点。 问题答案: 假设更多的内存使用不是问题,并且如果元组的第一项是可哈希的,则可以从元组列表中创建字典,然后查找值就像从中查找键一样简单。就像是: 编辑 :要创建一个反向映射,请使用类似:

  • 下午好!有一个对象包含类型为List的字段,是否可以通过表达式参数在注释中生成的值来设置T类型的每个(某些)字段? 例如: 目标对象: 映射器接口: 如何实现这样的想法?在文档中,我只找到了具有1:1映射的示例。 编辑: 此外,我尝试使用以下方法: 但在这种情况下,我对限定符有一些错误。