如何使用Selenium WebDrivervalidation元素中是否存在属性?

我的屏幕上有很多单选按钮。 选择单选按钮时,它具有已检查的属性。 未选择单选按钮时,不存在checked属性。 我想创建一个方法,如果元素不存在将通过。

我正在使用selenium webdriver和java。 我知道我可以使用getSingleElement(XXX).getAttribute(XXX)来检索属性。 我只是不确定如何validation属性不存在,以及测试在不存在时传递(如果确实存在则失败)。

选中单选按钮时

  

未选中单选按钮时

  

我希望在checked属性不存在时传递测试

您可以创建一个正确处理它的方法。 注意以下是C#/ Java混合风格,需要调整一下才能编译。

 private boolean isAttribtuePresent(WebElement element, String attribute) { Boolean result = false; try { String value = element.getAttribute(attribute); if (value != null){ result = true; } } catch (Exception e) {} return result; } 

如何使用它:

 WebElement input = driver.findElement(By.cssSelector("input[name*='response']")); Boolean checked = isAttribtuePresent(input, "checked"); // do your assertion here 

看这里 :

getAttribute(java.lang.String name)

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

使用您正在使用的任何测试框架断言该值为null

Assert.IsNull(getSingleElement(XXX).getAttribute( “检查”));

不幸的是,在报告的案例中,接受的答案无效。 由于某种原因,Cr和FF不存在的属性返回空字符串而不是null。 问题链接: https : //github.com/SeleniumHQ/selenium/issues/2525

对于断言单选按钮被选中

 Assert.assertTrue(element.isSelected()); 

对于断言单选按钮未选中

 Assert.assertFalse(element.isSelected()); 

对于断言,元素中存在属性

 Assert.assertEquals(element.getAttribute(attributeName), expectedAttributeValue); 

复选框有时会很棘手,因为检查的属性可能后面没有属性值。

如果您只关心属性的存在,那么简单的检查将如下所示:

  boolean hasAttr_css = driver.findElementsByCssSelector("#input_id[checked]").isEmpty(); 
 try { if (webdriver.findElement(By.identificationMethod(value)).getAttribute(value) != null) { passed = false; } } catch (Exception e) { passed = true; } 

是我在需要检查元素存在时使用的那种解决方案,但是必须注意NullPointer错误没有被NoSuchElementexception捕获。