selenium java怎么判断页面加载完成 selenium判断网页加载完成
转载
- Selenium只能判断页面是否加载完成(waitForPageLoad),当页面使用AJAX加载动态内容的时候,会出现页面已经加载完成但是真正的内容可能还没加载完,这时候测试就会无法进行。这时候可以使用isElementPresent判断某个HTML元素是否已经创建或者使用getText判断某个元素的文本是否与预定的值一致,这样可以判断动态内容是否已经加载。当然期间要加入等待的代码(Thread.sleep)和对超时的控制。
protected void waitForElement(String locator, int timeout)
throws InterruptedException {
for (int second = 0;; second++) {
if (second >= timeout) {
fail("............timeout............");
}
try {
if (selenium.isElementPresent(locator)) {
break;
}
} catch (Exception e) {
}
Thread.sleep(1000);
}
}
- 在页面上对表单数据进行验证的时候,我们可能会在用户输入的时候就进行验证,而不是等待用户提交的时候。一般有两种做法。一种是每输入一个字符就验证(一般用keyPress、keyDown、keyUp等事件),例如某个文本框只能输入数字,用type输入数据是不会触发验证的,这时可以用keyPress等方法输入单个数据来触发验证。另一种是在失去焦点的时候验证,例如验证textarea里的数据不会超长,这时用type输入数据也是不会触发验证的,即使用focus切换焦点到别的HTML元素上也大多数情况下不管用。这时候可以使用fireEvent("", "blur")来触发失去焦点事件。
- 运行selenium test case的时候有时会出现Access is denied的IE错误,这应该是selenium的一个bug,可以通过修改selenium server.jar里的core\scripts\htmlutils.js来修正(在函数openSeparateApplicationWindow的前两行加入try/catch以捕获该异常),具体内容可以参考http://www.nearinfinity.com/blogs/stephen_mouring_jr/selenium_mojo_access_is_denied.html#more
- 有时候我们会将一个iframe作为编辑器使用,如iframe的内容是
<html>
<body id="editor" contentEditable="true">
</body>
</html>
- 包含这个iframe页面的代码是
<html>
<body>
<p>Editor</p>
<iframe id="frame1" src="frame1.htm">
</iframe>
</body>
</html>
- selenium test case的代码可以这样写
selenium.type("//body[@id='editor']", "werwerwqerqwer");
assertEquals("werwerwqerqwer", selenium.getText("//body[@id='editor']"));
- 不需要使用selectFrame来选择要操作的iframe。对于输入的内容,有些跟HTML冲突的必须做一些转换,例如<,>,"等要转换成实体如<,>,"。例如如果要输入换行,则直接使用<br/>即可(不需要做转换),下面是一个例子
StringBuffer content = new StringBuffer();
content.append("<html>").append("<br/>");
content.append("<body>").append("<br/>");
content.append("<a href="test.jsp">link</a>")
.append("<br/>");
content.append("<br/>").append("<br/>");
content.append(
"<div class="content">hello world</div>")
.append("<br/>");
content.append("</body>").append("<br/>");
content.append("</html>").append("<br/>");
selenium.type("//body[@class='editbox']", content.toString());
- 实际上输入的是一段HTML文本
<html>
<body>
<a href="test.jsp">link</a>
<br/>
<div class="content">hello world</div>
</body>
</html>
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。