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

p8h8hvxi  于 2022-11-24  发布在  Java
关注(0)|答案(2)|浏览(292)

此问题在此处已有答案

How to handle HTML constraint validation pop-up using Selenium?(3个答案)
5小时前关门了。
我试过切换到alert,但是它显示没有发现这样的alert错误。我也试过ifranes,windowhandling。弹出窗口只停留1-2秒,我不能使用inspect元素来获取它的xpath。请检查所附的截图。

2w3kk1z5

2w3kk1z51#

您所指的https://www.phptravels.net/中的 * 警报窗口 * 是Constraint API的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.
06odsfpq

06odsfpq2#

我们可以执行鼠标操作并将鼠标移向元素,当鼠标指针移到元素上时,我们将获得工具提示文本。
1.因此,获取元素和工具提示文本的定位器值。
1.使用元素定位器将鼠标指针移动到元素上。
1.为工具提示文本创建Webelement对象并获取文本。

相关问题