北京中交建设公司网站,二建咨询在线,网站对企业的好处,开发app租用服务器价格等待奇迹 圣诞节是奇迹的时刻。 在新的一年的前夕#xff0c;我们都为下一年制定了计划。 我们希望所有问题都将在最后一年消失#xff0c;在来年出现奇迹。 每个Java开发人员都梦想着创造一个奇迹#xff0c;使他成为世界上最有效的Java开发人员。 我想向你展示这样的奇… 等待奇迹 圣诞节是奇迹的时刻。 在新的一年的前夕我们都为下一年制定了计划。 我们希望所有问题都将在最后一年消失在来年出现奇迹。 每个Java开发人员都梦想着创造一个奇迹使他成为世界上最有效的Java开发人员。 我想向你展示这样的奇迹。 这就是所谓的自动化测试 tests测试 是。 由于micro / pico / nano服务您不会成为真正的主人。 多亏纪律您才能成为真正的主人。 纪律声称开发人员仅在编写和运行代码和测试时才报告作业完成 。 但是测试不是很无聊吗 哦不相信我 对于最聪明的人来说编写快速 稳定的自动化测试是一个巨大的挑战。 这可能非常有趣。 您只需要使用正确的工具。 编写UI测试的正确工具是 硒化物 Selenide是一个开放源代码库用于编写简洁而稳定的UI测试。 Selenide是软件开发人员的理想选择因为它的学习曲线非常低。 因此您无需费心浏览器详细信息所有这些典型的ajax和时间问题而这些时间和问题都占用了QA自动化工程师的大部分时间。 让我们看一个最简单的Selenide测试 public class GoogleTest {Testpublic void user_can_search_everything_in_google() {open(http://google.com/ncr);$(By.name(q)).val(selenide).pressEnter();$$(#ires .g).shouldHave(size(10));$(#ires .g).shouldBe(visible).shouldHave(text(Selenide: concise UI tests in Java),text(selenide.org));}
} 让我们仔细看看这里发生的情况。 您只需open(url)一个命令即可open(url) 浏览器 open(url) 您可以在命令$的页面上找到一个元素 。 您可以按名称IDCSS选择器属性xpath甚至按文本查找元素。 您可以操纵元素 使用val()输入一些文本然后使用surprise-surprise pressEnter()按下回车键。 您检查结果 用$$查找所有找到的结果它返回所有匹配元素的集合。 您检查集合的大小和内容。 这个测试不容易阅读吗 这个测试不容易编写吗 我相信是。 深入细节 Ajax /时序问题 如今Web应用程序是动态的。 每个应用程序都可以随时动态呈现/更改。 这给自动化测试带来了很多问题。 今天测试为绿色的测试随时可能突然变成红色这是因为浏览器执行某些JavaScript的时间比平常更长。 这真是ajjaxx的痛苦 。 令人难以置信的是Selenide用一种非常简单的方式解决了大多数这些问题。 简而言之 如果需要 每种Selenide方法都会等待一点。 人们称其为“智能等待”。 当你写 $(#menu).shouldHave(text(Hello)); Selenide检查元素是否存在并包含文本“ Hello”。 如果还没有Selenide假定该元素可能很快就会动态更新并稍等片刻直到它发生。 默认超时为4秒通常对于大多数Web应用程序来说足够了。 当然它是可配置的。 丰富的匹配器 您可以使用Selenide检查几乎所有内容。 使用上面提到的“智能等待”机制。 例如您可以检查元素是否存在。 如果还没有Selenide将等待最多 4秒钟。 $(.loading_progress).shouldBe(visible); 您甚至可以检查该元素不存在。 如果仍然存在Selenide将等待4秒钟直到消失。 $(By.name(gender)).should(disappear); 您可以使用流利的API和链方法来使您的测试真正简洁 $(#menu).shouldHave(text(Hello), text(John!)).shouldBe(enabled, selected); 馆藏 Selenide允许您使用集合因此只需一行代码即可检查许多元素。 例如您可以检查页面上是否确实有N个元素 $$(.error).shouldHave(size(3)); 您可以找到集合的子集 $$(#employees tbody tr).filter(visible).shouldHave(size(4)); 您可以检查元素的文本。 在大多数情况下检查整个表或表行就足够了 $$(#employees tbody tr).shouldHave(texts(John Belushi,Bruce Willis,John Malkovich)
); 上传/下载文件 使用Selenide上传文件非常容易 $(#cv).uploadFile(new File(cv.doc)); 您甚至可以一次上传多个文件 $(#cv).uploadFile(new File(cv1.doc),new File(cv2.doc),new File(cv3.doc)
); 下载文件非常简单 File pdf $(.btn#cv).download(); 测试“高度动态”的Web应用程序 一些Web框架例如GWT生成HTML绝对不可读。 元素没有恒定的ID或名称。 这是xpathh中的真正痛苦 。 Selenide建议通过按文本搜索元素来解决此问题。 import static com.codeborne.selenide.Selectors.*;$(byText(Hello, Devoxx!)) // find by the whole text.shouldBe(visible);$(withText(oxx)) // find by substring.shouldHave(text(Hello, Devoxx!)); 通过文本搜索根本不是一个坏主意。 实际上我喜欢它是因为它模仿了真实用户的行为。 实际用户无法通过ID或XPATH找到按钮而是通过文本或者颜色找到按钮。 另一套有用的Selenide方法使您可以在父母和孩子之间导航。 $(td).parent()
$(td).closest(tr)
$(.btn).closest(.modal)
$(div).find(By.name(q)) 例如您可以按文本找到表格单元格然后按其最接近的tr后裔找到表格单元格并在此表格行内找到“保存”按钮 $(table#employees).find(byText(Joshua)).closest(tr.employee).find(byValue(Save)).click(); …和许多其他功能 Selenide具有更多功能例如 $(div).scrollTo();
$(div).innerText();
$(div).innerHtml();
$(div).exists();
$(select).isImage();
$(select).getSelectedText();
$(select).getSelectedValue();
$(div).doubleClick();
$(div).contextClick();
$(div).hover();
$(div).dragAndDrop()
zoom(2.5);
... 但好消息是您不需要记住所有这些东西。 只需放入$放入点然后从IDE建议的可用选项中进行选择。 使用IDE的力量 专注于业务逻辑。 让世界更美好 我相信当所有开发人员都开始为其代码编写自动化测试时World会变得更好。 当开发人员在17:00起床去看孩子时不用担心他们在最后的改动后会破坏某些东西。 让我们通过编写自动化测试来改善世界 提供工作软件。 翻译自: https://www.javacodegeeks.com/2015/12/effective-ui-tests-selenide.html