Ошибка: нет такого элемента: невозможно найти элемент: {"method": "text link", "selector": "Order Qty"} - PullRequest
0 голосов
/ 08 мая 2019

У меня ошибка в коде, когда я нахожу текст, но он не отображается в зависимости от строки, которая у меня есть в 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");

  }

 }

Обратите внимание, что отчет = "Кол-во заказов" (текст извлечен в Excel)

вот элемент, который мне нужно найти в браузере enter image description here

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Вместо поиска элемента по linkText попробуйте найти элементы по тексту, используя XPath.

Поскольку вы используете метод 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");
}
0 голосов
/ 08 мая 2019

Вы можете использовать этот Xpath:

//h2[text()='Order Qty']

Просто убедитесь, что это не должно быть ни в одном кадре.

Однако, введение WebDriverWait будет отличной идеей для стабильности.

для WebDriverWait:

(new WebDriverWait(driver, 10))
  .until(ExpectedConditions.elementToBeClickable (By.xpath("//h2[text()='Order Qty']")));  

Это вернет вам веб-элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...