Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何测试是否使用Selenium为必填字段触发了HTML5验证?_Html_Selenium_Validation - Fatal编程技术网

如何测试是否使用Selenium为必填字段触发了HTML5验证?

如何测试是否使用Selenium为必填字段触发了HTML5验证?,html,selenium,validation,Html,Selenium,Validation,假设我有以下HTML5片段: <form method="get" action="logginValidation.php"> <input type="text" required="" name="username"> <button class="btn" type="submit">Se connecter</button> </form> Se连接器 使用Selenium,我将字段留空并按下按钮。 表单

假设我有以下HTML5片段:

<form method="get" action="logginValidation.php">
    <input type="text" required="" name="username">
    <button class="btn" type="submit">Se connecter</button>
</form>

Se连接器
使用Selenium,我将字段留空并按下按钮。 表单未按预期进行验证,但如何验证字段无效,以及是否存在与字段相关的消息


现在我还没有调查的一件事是,我使用的是加载JavaScript库的Twitter引导。我必须再次检查这些图书馆是否在捉弄我,验证是否真的来自Firefox浏览器。

来自Selenium文档:

目前css选择器定位器支持所有css1、css2和css3 css3中除命名空间之外的选择器,一些伪类(:n个类型, :n类型的最后一个,:类型的第一个,:类型的最后一个,:仅类型的, :已访问、:悬停、:活动、:焦点、:不确定)和伪 元素(::第一行,::第一个字母,::选择,::之前, ::之后)

这意味着:required、:invalid和:valid不是可以选择与之交互的伪元素


我通过对下一页的文本执行VerifyNotText来解决这个限制。不是很理想,但很有效。

目前我正在用硒测试覆盖公司内部项目(类似于员工管理系统)。所以表单上有很多强制输入。如果其中任何一个是空的,那么整个表单都会得到验证。输入附近的文本标签变为红色,并显示相应的验证程序消息。 因此,我检查验证器正常工作的方法非常简单: -我编写了getcolortext方法来获取输入附近标签的颜色(如果它是红色的,那么验证程序已经在提交表单了)

我还应该补充一点,若验证器工作,那个么就会出现错误消息。因此,您可以找到此消息的定位器并比较适当的文本。 在其他情况下,当验证器没有工作时,例如提交表单,验证器消息的样式将类似于“显示:无”。因此,要了解一切正常,您只需检查台面是否可见:

driver.findElement(By.cssSelector(...blabla...)).isDisplayed()
最后一点。如果您想验证验证器的消息

public void addNewTimeOffValidatorsMessagesCheck(String expectedValidationMsg)  {
        Assert.assertTrue(driver.findElement(By.cssSelector(propertyKeysLoader("rms.home.timeoffsportlet.addnewtimeoff.validationmessage"))).getText().trim().equals(expectedValidationMsg));
    }
 addNewTimeOffValidatorsMessagesCheck("Timeoff type was not selected!");

希望现在对您来说它变得更清晰一些)

我认为可以通过检查元素在HTML中是否具有“required”属性来测试这一点。 示例代码为:- usernameField.getAttribute(“必需”)


如果不为null,则我们可以确保触发了验证。

无效字段的可能副本将输入:focus:required:invalid pseudo classes附加到该字段。隐马尔可夫模型。。。现在,我如何用Selenium验证这些伪元素的存在。我倾向于认为这是最好的解决方案,直到Selenium将其他伪元素添加到它们支持的列表中。
public void addNewTimeOffValidatorsMessagesCheck(String expectedValidationMsg)  {
        Assert.assertTrue(driver.findElement(By.cssSelector(propertyKeysLoader("rms.home.timeoffsportlet.addnewtimeoff.validationmessage"))).getText().trim().equals(expectedValidationMsg));
    }
 addNewTimeOffValidatorsMessagesCheck("Timeoff type was not selected!");