Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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_Selenium Webdriver_Automation_Assert - Fatal编程技术网

Java Selenium断言列表中数组的多个关键字的存在

Java Selenium断言列表中数组的多个关键字的存在,java,selenium,selenium-webdriver,automation,assert,Java,Selenium,Selenium Webdriver,Automation,Assert,正在尝试检查列表中是否存在多个关键字 List<String> array=new ArrayList<String>(); array.add("Sam Mayers test"); array.add(""); array.add("value"); array.add(""); array.add(""); array.add(""); array.add("District 49"); array.add("Till the last test"); array.

正在尝试检查列表中是否存在多个关键字

List<String> array=new ArrayList<String>();
array.add("Sam Mayers test");
array.add("");
array.add("value");
array.add("");
array.add("");
array.add("");
array.add("District 49");
array.add("Till the last test");
array.add("Dawn Strings");
array.add("Lists value");
array.add("");
array.add("");
array.add("Total Hits Lists");
array.add("Values");


Boolean found = false;

        List<String> keywords_tobe_checked = new ArrayList<>();
        keywords_tobe_checked.add("Lists");
        keywords_tobe_checked.add("value");
        keywords_tobe_checked.add("Mayers");
        List<String> dummylist = new ArrayList<>();

        for (int i = 0; i < array.size(); i++) {
            String val = array.get(i);
            for (int j = 0; j < keywords_tobe_checked.size(); j++) {
            if (val.indexOf(keywords_tobe_checked.get(j)) >= 0) {
                dummylist.add(val);
            }
            }
        }
        System.out.println(dummylist);

        Assert.assertTrue(dummylist.containsAll(keywords_tobe_checked), "Its not correct");
List array=new ArrayList();
添加(“Sam Mayer测试”);
数组。添加(“”);
数组。添加(“值”);
数组。添加(“”);
数组。添加(“”);
数组。添加(“”);
数组。添加(“第49区”);
添加(“直到最后一次测试”);
数组。添加(“黎明字符串”);
add(“列出值”);
数组。添加(“”);
数组。添加(“”);
添加(“总点击列表”);
数组。添加(“值”);
布尔值=false;
列表关键字_tobe_checked=new ArrayList();
关键词待检查。添加(“列表”);
关键词待检查。增加(“价值”);
关键词待检查。添加(“迈尔斯”);
List dummylist=new ArrayList();
对于(int i=0;i=0){
dummylist.add(val);
}
}
}
System.out.println(dummylist);
Assert.assertTrue(dummylist.containsAll(关键字要检查),“它不正确”);
我上面的代码在asserttrue条件下失败,并给出了错误的结果

有没有一种方法可以通过“关键字检查”中提到的所有关键字都出现在“dummylist”中的条件来传递这个断言

已尝试更新代码:

List<String> array=new ArrayList<String>();
        array.add("Sam Mayers test");
        array.add("");
        array.add("value");
        array.add("");
        array.add("");
        array.add("");
        array.add("District 49");
        array.add("Till the last test");
        array.add("Dawn Strings");
        array.add("Lists value");
        array.add("");
        array.add("");
        array.add("Total Hits Lists");
        array.add("Values");



        List<String> keywords_tobe_checked = new ArrayList<>();
        keywords_tobe_checked.add("Lists");
        keywords_tobe_checked.add("value");
        keywords_tobe_checked.add("Mayers");

        System.out.println(array);
        System.out.println(keywords_tobe_checked);
        for (String keyword : keywords_tobe_checked) {
            Boolean found = false;  
            for (String value : array) {
                if (value.contains(keyword)) {
                    found = true;
                    break;
                }
                Assert.assertTrue(found, "The keyword " + keyword + " not in the list");
            }

        }


 Content of the Array------------       [Sam Mayers test, , value, , , , District 49, Till the last test, Dawn Strings, Lists value, , , Total Hits Lists, Values]
  Content of the Keywords to be checked -----------------  [Lists, value, Mayers]
    Exception in thread "main" java.lang.AssertionError: The keyword Lists not in the list expected [true] but found [false]
        at org.testng.Assert.fail(Assert.java:94)
        at org.testng.Assert.failNotEquals(Assert.java:496)
        at org.testng.Assert.assertTrue(Assert.java:42)
List array=new ArrayList();
添加(“Sam Mayer测试”);
数组。添加(“”);
数组。添加(“值”);
数组。添加(“”);
数组。添加(“”);
数组。添加(“”);
数组。添加(“第49区”);
添加(“直到最后一次测试”);
数组。添加(“黎明字符串”);
add(“列出值”);
数组。添加(“”);
数组。添加(“”);
添加(“总点击列表”);
数组。添加(“值”);
列表关键字_tobe_checked=new ArrayList();
关键词待检查。添加(“列表”);
关键词待检查。增加(“价值”);
关键词待检查。添加(“迈尔斯”);
System.out.println(数组);
System.out.println(关键字要检查);
for(字符串关键字:要检查的关键字){
布尔值=false;
for(字符串值:数组){
if(value.contains(关键字)){
发现=真;
打破
}
Assert.assertTrue(发现“关键字”+关键字+”不在列表中);
}
}
数组内容---------[Sam Mayer测试,值,第49区,直到最后一次测试,黎明字符串,列表值,总点击量列表,值]
要检查的关键字的内容----------------[列表、值、Mayer]
线程“main”java.lang.AssertionError中出现异常:关键字列表不在列表中,应为[true],但找到[false]
位于org.testng.Assert.fail(Assert.java:94)
位于org.testng.Assert.failNotEquals(Assert.java:496)
位于org.testng.Assert.assertTrue(Assert.java:42)

由于数组列表中的值,您在代码中所做的操作不正确

当使用
containsAll
方法时,您正在数组列表中查找特定的字符串

例如: 第一个列表包含对象
Sam Mayer test
。 第二个列表有object
mayer


这就是为什么您有断言错误
Sam Mayer test
Mayer
是两个完全不同的对象。

当检查
列表
是否包含
字符串
时,只有当存在精确匹配时,结果才会为真

array.contains("Lists"); // false

array.contains("Lists value"); // true
要检查部分匹配,需要在循环中使用
Assert.assertTrue

for (String keyword : keywords_tobe_checked) {
    boolean hasKeyword = false;
    for (String value : array) {
        if (value.contains(keyword)) {
            hasKeyword = true;
            break;
        }
    }

    Assert.assertTrue(hasKeyword, "The keyword " + keyword + " is in the list");
}

我不能编辑你的帖子。您的答案是正确的,您只是在
中断后缺少
}
不是我想要的那样工作。。。。再次将断言失败作为“线程中的异常”main“java.lang.AssertionError:关键字列表不在列表中,应为[true],但找到[false]”@Guy我已经添加了更新的代码,我尝试使用您给定的逻辑,但仍然导致断言失败。@Automation\u User运行时,
dummylist
中的值是多少?还有,你是从什么地方复制字符串的吗?可能存在编码差异,请尝试手动编写。@Automation\u用户确保使用的代码中缺少
}
,因为上一版本抛出了
AssertionError