Java 如何处理空元素的NoTouchElementException,并且仍然执行下一行代码?

Java 如何处理空元素的NoTouchElementException,并且仍然执行下一行代码?,java,selenium,nosuchelementexception,Java,Selenium,Nosuchelementexception,我正在尝试将动态web表的文本获取到excel工作表中,有时文本显示在列的行中,有时则不显示。。当表格行中存在文本时,我希望使用getText方法获取该单元格的文本。但当文本不存在时,我希望写入空文本并保持单元格为空。。但这并没有给人任何意外的感觉。。如何处理。。??任何帮助都将不胜感激。。提前谢谢 String actualXpath_SL = beforeXpath_SL + j + afterXpath_SL; String SL = driver.findElements

我正在尝试将动态web表的文本获取到excel工作表中,有时文本显示在列的行中,有时则不显示。。当表格行中存在文本时,我希望使用getText方法获取该单元格的文本。但当文本不存在时,我希望写入空文本并保持单元格为空。。但这并没有给人任何意外的感觉。。如何处理。。??任何帮助都将不胜感激。。提前谢谢

    String actualXpath_SL = beforeXpath_SL + j + afterXpath_SL;
    String SL = driver.findElements(By.xpath(actualXpath_SL)).getText()

    currentRow.createCell(0).setCellValue(SL);

要在selenium找不到元素时继续您的计划,您可以做两件事

  • 将代码放入try块中,并在catch块中处理
    NoSuchElementException
字符串OneA=”“;
试一试{
//查找元素
OneA=driver.findElement(By.xpath(actualXpath_1A)).getText();
}捕获(无接触元素例外e){
//捕获异常后的stacktrace和其他代码
e、 printStackTrace();
}
,您可以使用
findElements
检查返回的列表是否为空

List<WebElement> elements  = driver.findElements(By.xpath(actualXpath_1A));
String OneA = "";
if(!elements.isEmpty()){
    OneA = elements.get(0).getText();
} else {
    //Handle if no element present
}
List elements=driver.findElements(By.xpath(actualXpath_1A));
字符串OneA=“”;
如果(!elements.isEmpty()){
OneA=elements.get(0.getText();
}否则{
//如果不存在元素,则处理
}

第二种解决方案避免了异常,并且比等待异常要快

要在selenium找不到元素时继续您的计划,您可以做两件事

  • 将代码放入try块中,并在catch块中处理
    NoSuchElementException
字符串OneA=”“;
试一试{
//查找元素
OneA=driver.findElement(By.xpath(actualXpath_1A)).getText();
}捕获(无接触元素例外e){
//捕获异常后的stacktrace和其他代码
e、 printStackTrace();
}
,您可以使用
findElements
检查返回的列表是否为空

List<WebElement> elements  = driver.findElements(By.xpath(actualXpath_1A));
String OneA = "";
if(!elements.isEmpty()){
    OneA = elements.get(0).getText();
} else {
    //Handle if no element present
}
List elements=driver.findElements(By.xpath(actualXpath_1A));
字符串OneA=“”;
如果(!elements.isEmpty()){
OneA=elements.get(0.getText();
}否则{
//如果不存在元素,则处理
}
第二种解决方案避免了异常,并且比等待异常要快

您应该使用
.size()>0
而不是
isEmpty()

String actualXpath\u 2S=beforepath\u 2S+j+afterXpath\u 2S;
列表八=driver.findElements(By.xpath(actualXpath_2S));
字符串TwoS=“”;
如果(8.size()>0){
TwoS=8.get(0.getText();
}
您必须更新使用
isEmpty
的所有if条件的逻辑。您应该使用
.size()>0
而不是
isEmpty()

String actualXpath\u 2S=beforepath\u 2S+j+afterXpath\u 2S;
列表八=driver.findElements(By.xpath(actualXpath_2S));
字符串TwoS=“”;
如果(8.size()>0){
TwoS=8.get(0.getText();
}


您必须更新使用
isEmpty

@supputuri的所有if条件的逻辑。您好,您能帮我解决这个问题吗?在哪一行获得异常?@SAhmed无法获得Text getText方法。。当元素不存在时..@supputuri hi您能帮我解决这个问题吗在哪一行您得到异常?@SAhmed无法得到文本getText方法。。当元素不存在时..如何访问块外(即SetCellValueIn)中的一个var声明try块或if块范围外的字符串。我已编辑了代码,并在外部声明了字符串。试一试。@S艾哈迈德你好,我试过你说的。但不起作用。请看编辑后的问题哪一部分不起作用?它打印出我想的所有元素,比如
AA 55063 STP DAL PASS STP DAL 14:42 14:44 00:02H Y Y Y Y Y无保留序列
我如何访问块外的一个变量,即在setcellvalues中声明try块或if块范围外的字符串。我编辑了代码,并声明了外部的字符串。试一试。@S艾哈迈德你好,我试过你说的。但不起作用。请看编辑后的问题哪一部分不起作用?它打印了我认为的所有元素,如
AA 55063 STP DAL PASS STP DAL 14:42 14:44 00:02H Y Y Y Y Y UNRESERVED TRAIN
如果你必须访问变量,如
TwoS
,那么就将它们声明为类变量。我认为你应该对原始帖子中提到的问题很在行。如果您需要关于变量用法的任何进一步说明,请在另一个问题中提及。不想让某人在同一篇文章中被多个问题弄糊涂。在控制台上获得一些输出。这非常缓慢。而且不可行。。在第一行之后..和浏览器上不显示任何正在执行的操作。。在第一次单击之后。如果您必须访问变量,如
TwoS
,则将它们声明为类变量。我认为您应该对原始帖子中提到的问题很在行。如果您需要关于变量用法的任何进一步说明,请在另一个问题中提及。不想让某人在同一篇文章中被多个问题弄糊涂。在控制台上获得一些输出。这非常缓慢。而且不可行。。在第一行之后..和浏览器上不显示任何正在执行的操作。。第一次单击后。。