如何使用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捕获。
- 如何将平面数据结构显示为分层数据结构(Java)?
- 什么时候应该在Java中使用本地类?
- @Context返回代理而不是HttpServletRequest(代理范围内没有线程本地值)
- 如何在调整窗口大小时重新定位JButton
- 为什么我得到Class not found例外
- 如何从Java中获取网络数据包数据
- WAS 8.5:java.lang.ClassCastException:org.apache.xerces.jaxp.SAXParserFactoryImpl与javax.xml.parsers.SAXParserFactory不兼容
- 既不是BindingResult也不是普通的目标对象……例外
- 是否可以在运行时访问Java 8类型信息?