首页 > 解决方案 > 错误:没有这样的元素:无法找到元素:{"method":"link text","selector":"Order Qty"}

问题描述

我的代码有错误,其中我找到了一个文本,但它没有根据我在我的 excel 上的字符串显示。我认为这是由于框架设置所致。

这是我的代码:

'if (driver.findElement(By.linkText(reports)).isDisplayed())
 {

  System.out.println("report = "+ reports + "does not exist");

  }
else
  {

  System.out.println("report = "+ reports + "does not exist");

  }

 }

注意report = “Order Qty”(文本是在excel上提取的)

这是我需要在浏览器上找到的元素在此处输入图像描述

标签: javaseleniumautomationqa

解决方案


尝试使用 XPath 通过文本查找元素,而不是通过 linkText 查找元素。

由于您使用该isDisplayed()方法来检查元素是否可见,我假设您希望元素有时不可见。在这种情况下,如果元素不可见,它将始终抛出 NoSuchElement 异常。
为避免这种情况,您必须在 try 块中使用条件并在 catch 块中处理异常。或者您可以使用findElements并检查永远不会抛出异常的列表大小。

正如 Cruisepandey 所提到的,您还应该对元素加载延迟使用显式等待。

String reports = "Order Qty";
List<WebElement> list = new WebDriverWait(driver,30).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//div[@class='kpi-report-wrapper']/h2[contains('"+reports+"')]")));

if(list.isEmpty()){
    System.out.println("report = "+reports+ "does not exist" );
}else {
    System.out.println("report = "+reports+ "exists");
}

推荐阅读