Java 当字符串与元素不匹配时如何抛出错误

Java 当字符串与元素不匹配时如何抛出错误,java,selenium,cucumber,cucumber-java,Java,Selenium,Cucumber,Cucumber Java,我试图单击列表元素中的一个元素,其中link元素等于String。如果它们不相等,我需要验证错误是否会抛出 当我正在比较的字符串与使用if语句的元素匹配时,它就会工作。一旦我在else语句中添加了一个条件,我就会得到一个错误。它以某种方式列出了所有元素 public void clickFromList(按元素、字符串项)引发异常{ 试一试{ List linkElements=driver.findElements(元素); for(WebElement WebElement:linkElem

我试图单击列表元素中的一个元素,其中link元素等于String。如果它们不相等,我需要验证错误是否会抛出

当我正在比较的字符串与使用if语句的元素匹配时,它就会工作。一旦我在else语句中添加了一个条件,我就会得到一个错误。它以某种方式列出了所有元素

public void clickFromList(按元素、字符串项)引发异常{
试一试{
List linkElements=driver.findElements(元素);
for(WebElement WebElement:linkElements){
字符串eleText=webElement.getText();
if(eleText.matches(项目)){
System.out.println(“所选:“+eleText”);
webElement.click();
System.out.println(“单击:”+eleText);
打破
}否则{
Assert.assertFalse(true,“Error”);
}
}
}捕获(无接触元素例外e){
Assert.fail(“在页面中找不到元素,元素为:“+element”);
}
}
例外情况:

java.lang.AssertionError: Error expected [false] but found [true]

我认为您可以抛出如下自定义异常:

throw new Exception("Message");

您可以尝试使用下面给定的代码,让我知道它是否适合您

public void clickFromList(By element, String item) throws Exception{
try {
    List<WebElement> linkElements = driver.findElements(element);
    for (WebElement webElement : linkElements) {
        String eleText = webElement.getText();
        if(eleText.matches(item)) {
            System.out.println("Selected: " + eleText);
            webElement.click();
            System.out.println("Clicked: " + eleText);
            break;
        }
 else 
 {
 //in assert false method string comes first
 Assert.assertFalse("Element not found with the given text in list",false);
        }
    }
} catch (NoSuchElementException e) {
      Assert.fail("Can't find the element in the page. The element is: " +element);
}
public void clickFromList(按元素、字符串项)引发异常{
试一试{
List linkElements=driver.findElements(元素);
for(WebElement WebElement:linkElements){
字符串eleText=webElement.getText();
if(eleText.matches(项目)){
System.out.println(“所选:“+eleText”);
webElement.click();
System.out.println(“单击:”+eleText);
打破
}
其他的
{
//在assert-false方法中,字符串是第一位的
Assert.assertFalse(“在列表中找不到具有给定文本的元素”,false);
}
}
}捕获(无接触元素例外e){
Assert.fail(“在页面中找不到元素,元素为:“+element”);
}

}

如果你想让你的方法抛出一个错误,抛出一个异常,不要使用断言。嗨@Stultuske,我试过了。由于只捕获第一个元素,因此我的if语句失败。需要在arraylist中添加元素吗?我不明白你在说什么。一旦你的迭代遇到一个不相等的值,它就会抛出这个错误,最好只保留一个在迭代过程中更新的标志(布尔值),并在迭代结束后检查该值。嗨,我添加了一个布尔值,它就工作了。谢谢你的帮助。:)我这样做了,但我的if语句失败了,因为list只捕获了第一个元素。@Vince I在我最后的评论中解释了这一点。Aravinda,这应该是一个评论,而不是一个答案,因为它实际上并没有回答这个问题嗨,谢谢你的投入,但我已经尝试过了,但没有成功。:)