我开发了一个由一系列类别,子类别和链接组成的页面。基本上有几百个链接列在主要类别下的层次结构中。主要类别包含1到4个深度级别(即一些主要类别包含直接链接,而其他主要类别包含导致直接链接的3个子类别级别)。使用Selenium&Cucumber测试一组链接JVM-Java
该页面采用了棱角分明,所以点击链接的子类别将从根本上更新模型加载适当的数据来构建,而直接点击链接将在外部窗口中打开URL。有一个在层次之间来回移动的面包屑。当一个类别被点击时,用户将被带到一个新的视图,在该视图中显示其下的所有子类别,包括该级别的任何直接链接。从这里开始,用户可以查看任意数量的级别,直到找到所需的直接链接。问题是,层次结构的层次不一致。
那部分不是那么重要了,因为我已经开发了一类用于测试在使用Selenium通过水平循环打开发现每个直接链接URL各级链接。但我想给出一个关于如何设置页面的概述。这不仅仅是一个测试链接列表 - 相反,它是一个多层次的层次结构,可以链接到外部网站。
正如我所说的,硒测试工作正常。 Java类从Excel工作表中读取预期的层次结构和URL,浏览页面直到找到直接链接,打开它,并验证加载的页面是否包含预期的URL。在同一张Excel表格中,程序根据测试结果写入PASS或FAIL的值。
我有被转换我现有的硒例如到黄瓜的步骤定义问题。我看到的最大问题是依赖嵌套循环来检查所有直接链接层次结构的级别。我不太明白如何在黄瓜中使用循环。我对它的了解越多,它看起来越不像是Cucumber功能的正确应用。我尝试使用Cucumber来测试像这样的链接测试跑步者我错了吗?我似乎无法映射合理数量的功能和步骤定义。到目前为止,我理解Cucumber的方式是编写有限数量的功能,这些功能使用@Given,@When,@Then等注释映射到方法(即每个测试用例都单独映射)。你必须准确地知道要运行的测试用例的数量,而Selenium示例我已经根据从Excel工作表中读取的链接动态确定要运行多少个案例。换句话说,它似乎不太实际为每个链接层次结构编写一个功能。我开始用简单的功能,如下面,我已经撞墙了,因为我不知道我怎么可以遍历并执行这些步骤,每一个环节:
Feature: Click Final Link
Scenario: Successfully click final link
When User Clicks on Final Link
Then Load Link
@When("^User Clicks on Final Link$")
public void User_Clicks_on_Final_Link() throws Throwable {
// Express the Regexp above with the code you wish you had
throw new PendingException();
}
Feature: Click Category
Scenario: Successfully click category link
When User Clicks on Category Link
Then Load Subcategory Links
@When("^User Clicks on Category Link$")
public void User_Clicks_on_Category_Link() throws Throwable {
// Express the Regexp above with the code you wish you had
throw new PendingException();
}
你究竟需要测试什么?你没有损坏的链接(404's)? – lauda
@lauda没错。没有404s,并且从给定链接打开的页面的URL(由其xpath选择)是在Excel工作表中找到的预期URL。 – flyntstone92