Получите предупреждающее сообщение Text of Success в Ant Design и проверьте его с помощью Selenium - PullRequest
0 голосов
/ 24 июня 2019

В одном из моих проектов я должен проверить текст предупреждения об успехе с помощью Selenium.Пользовательский интерфейс кодируется в реагирующем JS в соответствии с дизайном Ant.Для проверки перейдите по этой ссылке 'https://ant.design/components/message/' и нажмите «Показать обычное сообщение».Это сообщение показано выше в верхней части страницы, но я не могу получить текст из него, используя кодирование Selenium Webdriver в Core Java.Пожалуйста, помогите.

Я попробовал этот код:

driver.findElement(By.cssSelector(".ant-btn-primary")).click();
            WebDriverWait wait = new WebDriverWait(driver, 60);
            WebElement successmessage = wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("ant-message-custom-content-ant-message-success")));
            successmessage.getText();

Ответы [ 3 ]

1 голос
/ 24 июня 2019

Для извлечения текста Это обычное сообщение , вам нужно вызвать WebDriverWait для visibilityOfElementLocated(), и вы можете использовать любую из следующих Стратегий локатора :

  • cssSelector:

    driver.get("https://ant.design/components/message/");
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("button.ant-btn.ant-btn-primary"))).click();
    System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.ant-message"))).getText());
    
  • xpath

    driver.get("https://ant.design/components/message/");
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@class='ant-btn ant-btn-primary']"))).click();
    System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='ant-message']"))).getText());
    
  • Консольный вывод:

    This is a normal message
    
0 голосов
/ 24 июня 2019

Я собираюсь предложить:

driver.findElement(By.cssSelector(".ant-btn-primary")).click();
WebDriverWait wait = new WebDriverWait(driver, 15, 100);
String successMessage = wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".ant-message-info > span"))).getText();

Основная проблема, с которой вы столкнулись, заключается в том, что сообщение не длится очень долго, поэтому вам нужно быстро извлечь из него данные, прежде чем оноуничтоженВ результате я встроил вызов getText (), чтобы он вызывался, как только элемент был найден.

Я подозреваю, что частью вашей проблемы является получение точного локатора.Вы можете сделать это проще, открыв консоль Chrome Dev, выбрав родительский элемент, в котором создается сообщение с уведомлением, а затем щелкнув правой кнопкой мыши по этому элементу и выбрав break on -> subtree modifications.Это позволит вам посмотреть на промежуточное состояние DOM, приостановив выполнение JavaScript после создания сообщения.Это значительно облегчает понимание происходящего и поиск соответствующих локаторов.

0 голосов
/ 24 июня 2019
driver.findElement(By.cssSelector(".ant-btn-primary")).click();
WebElement alertElmt = driver.findElement(By.xpath("//*[@class='ant-message']"));

for(int i=1; i<10; i++) {
    Thread.sleep(500);
    String getText = alertElmt.getText();
    if(!getText.equals("")) {
        System.out.println(getText);
        break;
    }
}

//or with webdriverwait
driver.findElement(By.cssSelector(".ant-btn-primary")).click();
WebElement alert = new WebDriverWait(driver,20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@class='ant-message']")));
System.out.println(alert.getText());
...