Selenium webdriver 如何比较两个列表

Selenium webdriver 如何比较两个列表,selenium-webdriver,webdriver,Selenium Webdriver,Webdriver,有两个列表,我想比较一下 这些列表是否具有相同的值 我该怎么做?请建议 List<WebElement> Gender=wd.findElements(By.xpath(".//*@id='MyMember_GenderId']")); int genderval=Gender.size(); System.out.println(genderval); for(WebElement G : Gender ) { System.out.println("Gender is :

有两个列表,我想比较一下 这些列表是否具有相同的值 我该怎么做?请建议

List<WebElement> Gender=wd.findElements(By.xpath(".//*@id='MyMember_GenderId']"));
int genderval=Gender.size();
System.out.println(genderval);
for(WebElement G : Gender ) {
    System.out.println("Gender is :"+G.getText());
}
List<WebElement> Mstatus=wd.findElements(By.xpath(".//*[@id='MyMember_MaritalStatusId']"));
int statusval=Mstatus.size();
System.out.println(statusval);
for(WebElement text : Mstatus ) {
    System.out.println("Gender is :"+text.getText());
}
使用containsAll函数。就像你的案例一样,你可以在一个字符串列表中获取性别文本,在另一个列表中获取Mstatus,即

List<String> genderList = new ArrayList<String>();
for (WebElement G : Gender ) {
    genderList.add(G.getText());
}
List<String> mstatusList = new ArrayList<String>();
for (WebElement G : Mstatus) {
    mstatusList.add(G.getText());
}
System.out.println(mstatusList.containsAll(genderList));

containsAll将检查所提供集合的所有元素。

这只是断言两个列表是否相等的另一种方法。 根据@Vivek,获取文本列表,并说检索文本后得到的列表是:genderList和mstatusList

您也可以使用以下代码断言这两个列表:

try{
    Assert.assertEquals(genderList, mstatusList);
    System.out.println("Equal lists");
}catch(Throwable e){
    System.err.println("Lists are not equal. "+e.getMessage());
}

注意:您需要使用import junit.framework.Assert导入Assert类;假设您正在使用junit框架,也就是说。

非常感谢您Vivek@user3729477如果上面的答案对你有帮助,请把它当作答案。谢谢捕捉错误不是一种好的做法。与其使用JUnit断言,不如使用TestNG SoftAssert。希望我的建议是正确的你可能真的很对。但是,问题是,我还没有研究过TestNG框架。因此,上述建议涉及junit…:另一方面,这里捕获错误可以确保执行继续向前,而不是停止和退出。如果他/她想抓住错误继续前进,或者在发现错误时停止执行并退出,这实际上取决于此人。