如何使用Selenium和Java在https://www.phptravels.net/网站中提取HTML5约束验证的文本?

时间:2018-12-02 11:50:07

标签: java html5 selenium selenium-webdriver constraint-validation

我尝试过切换警报,但是没有发现警报发现错误。 而且我也尝试过ifranes,窗口处理。 弹出窗口仅停留1-2秒,我无法使用inspect元素获取该窗口的xpath。 请检查所附的scrrenshot。

enter image description here

2 个答案:

答案 0 :(得分:1)

您所引用的https://www.phptravels.net/中的警报窗口Constraint API's element.setCustomValidity()方法的结果。

  

注意:HTML5约束验证不会消除服务器端验证的需要。即使可以预期的无效表单请求的数量要少得多,无效请求仍然可以由不兼容的浏览器(例如,没有HTML5和JavaScript的浏览器)或试图欺骗您的Web应用程序的坏人发送。因此,与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.
    

答案 1 :(得分:0)

我们有可能执行鼠标操作并将鼠标移向该元素,当鼠标指针移到该元素上时,我们将获得工具提示文本。

  1. 因此,获取元素和工具提示文本的定位符值。
  2. 使用元素定位器将鼠标指针移动到元素。
  3. 为工具提示文本创建webelement对象并获取文本。