Как извлечь текст проверки HTML5 Constraint на веб-сайте https://www.phptravels.net/, используя Selenium и Java? - PullRequest
0 голосов
/ 02 декабря 2018

Я попытался переключиться на оповещение, но оно не показало ошибку, обнаруженную таким оповещением.И я также попробовал ifranes, обработку окон.Всплывающее окно остается только 1-2 секунды, и я не могу использовать элемент inspect, чтобы получить xpath этого.Пожалуйста, проверьте прикрепленный скриншот.

enter image description here

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Окно предупреждения в https://www.phptravels.net/, на которое вы ссылаетесь, является результатом метода Constraint API element.setCustomValidity () .

Примечание : проверка ограничений HTML5 не устраняет необходимость проверки на стороне сервера.Несмотря на то, что следует ожидать гораздо меньше недопустимых запросов форм, они могут отправлять некорректные браузеры (например, браузеры без HTML5 и JavaScript) или плохие парни, пытающиеся обмануть ваше веб-приложение.Следовательно, как и в случае с HTML4, вам также необходимо проверить входные ограничения на стороне сервера таким образом, чтобы это соответствовало тому, что делается на стороне клиента.

Решение

ДляПолучить текст, полученный в результате использования метода element.setCustomValidity(), можно с помощью следующего решения:

  • Блок кода:

    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.support.ui.ExpectedConditions;
    import org.openqa.selenium.support.ui.WebDriverWait;
    import org.openqa.selenium.By;
    
    public class HTML5_input_field_validation_message {
    
        public static void main(String[] args) {
    
            System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
            WebDriver driver = new FirefoxDriver();
            driver.get("https://www.phptravels.net/");
            WebElement checkin = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.form.input-lg.dpd1[name='checkin']")));
            System.out.println(checkin.getAttribute("validationMessage"));
        }
    }
    
  • Консольный вывод:

    Please fill out this field.
    
0 голосов
/ 02 декабря 2018

Существует возможность выполнения действий мыши и перемещения мыши к элементу, когда указатель мыши перемещается к элементу, тогда мы получим текст подсказки.

  1. Итак, получите локаторзначения элемента и текста всплывающей подсказки.
  2. Переместите указатель мыши на элемент с помощью локатора элемента.
  3. создайте объект webelement для текста всплывающей подсказки и получите текст.
...