2016-08-05 20 views
0

我开发了一个由一系列类别,子类别和链接组成的页面。基本上有几百个链接列在主要类别下的层次结构中。主要类别包含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(); 
} 
+0

你究竟需要测试什么?你没有损坏的链接(404's)? – lauda

+0

@lauda没错。没有404s,并且从给定链接打开的页面的URL(由其xpath选择)是在Excel工作表中找到的预期URL。 – flyntstone92

回答

1

我认为,黄瓜是不是该做,你应该测试部分规格不说该页面是否打开。 几乎每个断开的链接都不会有失败的测试。

一些选项有:

  1. 利用一些已知的工具(甚至在网上,如果你没有任何安全限制),检查所有的网站链接是否损坏

  2. 找到一个图书馆与黄瓜自动抓取所有页面并检查损坏的链接一起使用。这个选项可以将它整合到一个步骤中。

  3. 写/查询该抓取所有的网页,并检查所有链接,并用它在你的情况下

我认为这是一个更好的方法来使用脚本来抓取和检查自定义脚本链接,而不是将链接硬编码在一个文件中。

我建议将此功能集成到场景中,只有在您拥有自动套件的情况下,并且您还需要执行此检查的每次运行。

相关问题