在运行automation时候,经常会遇到的问题是,页面的元素加载需要时间,而这个时间是不确定的,但是你的执行是一直在一步步往下走,如果实际页面等待时间过长导致某个dom元素还没出来,但是你的代码直接使用了这个WebElement,那么就会抛出NullPointer的异常。
为了解决这种问题,尤其是RemoteWebDriver(不确定因素更多的情况) ,我们就需要用很高级的WebDriverWait的功能。
简而言之,这个WebDriverWait就是等待到某个条件的满足之下然后再继续往下走。
贴上样例代码:
WebDriverWait wait = new WebDriverWait(getWebDriver(), 3); wait.until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver webDriver) { return !justification.getAttribute("class").contains("x-form-invalid-field"); } });
这段代码是干什么呢,它是说,默认让webDriver最多等3秒,直到页面上叫justification的WebElement元素的样式不包含x-form-invalid-field.
分析:
这是什么意思呢?很简单,因为我们的页面上每个字段都加了js表单验证,如果这个页面上的元素输入错误,就会有一个红色的框框提示用户非法输入,这个红色框框的样式就是x-form-invalid-field,所以我们的作用就是等这个红色的框框消失,然后再进行下一步的操作。
如下图:
因为这个justification的WebElement是强制用户输入的,如果用户不输入,就有个红色框框:
然后这个红色的框框的样式包含x-form-invalid-field,如下图:
所以现在十分清楚了,我们的目的就是在运行automation testcase时候让这个红色框框消失。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。