【问题标题】:Why getattirbute("required") is true always in selenium?为什么 getattirbute("required") 在硒中总是正确的?
【发布时间】:2020-10-16 16:04:44
【问题描述】:

//[input type="text" placeholder="First Name" class="form-control" ng-model="FirstName" required]
下面是我的代码

elemntvalue = driver.FindElement(By.XPath("//input[@placeholder='First Name']"));

string namerequired = elemntvalue.GetAttribute("required");

无论我是否传递数据,namerequired 总是正确的。有没有其他方法可以在 selenium 中捕获必填字段错误消息??

【问题讨论】:

  • 硒中的错误信息是什么意思?
  • 错误信息如请填写名字

标签: c# selenium selenium-webdriver automation getattribute


【解决方案1】:

在 Selenium 中没有其他方法,但您需要使用您的语言(Java、C#)来处理它

    string nameRequired = elemntvalue.getAttribute("required");
    if (nameRequired == null) {
       //Means "required" attribute is not set OR name element is not a required field
    } else if (nameRequired.contains("true")) {
       //Means "required" attribute is set OR name element is a required field
    } else {
       //If it has any value then do something as required
    }

获取元素给定属性的值。将返回当前值,即使在页面加载后已对其进行了修改。

更准确地说,此方法将返回具有给定名称的属性的值(如果存在)。如果不是,则返回具有给定名称的属性的值。如果都不存在,则返回 null。

“style”属性被尽可能地转换为带有尾随分号的文本表示。

以下被视为“布尔”属性,将返回“真”或空: 异步,自动对焦,自动播放,检查,紧凑,完整,控件,声明,defaultchecked,defaultselected,延迟,禁用,可拖动,结束,formnovalidate,隐藏,不确定,iscontenteditable,ismap,itemscope,循环,多个,静音,nohref,noresize, noshade, novalidate, nowrap, 打开, 暂停, pubdate, readonly, required, reversed, scoped, seamless, seek, selected, truespeed, willvalidate

最后,按预期评估以下常见的大写错误的属性/属性名称:

如果给定名称是“class”,则返回“className”属性。

如果给定名称是“readonly”,则返回“readOnly”属性。

注意:这种行为的原因是用户经常混淆属性和属性。如果你需要做一些更精确的事情,例如,即使存在同名的属性也要引用一个属性,那么你应该评估 Javascript 以获得你想要的结果。

参数: name - 属性的名称。

返回: 属性/属性的当前值,如果未设置该值,则为 null。

【讨论】:

    最近更新 更多