使用Selenium& amp;测试一组链接黄瓜JVM-Java

时间:2016-08-05 15:41:20

标签: java loops selenium selenium-webdriver cucumber

我有一个我正在开发的页面,其中包含一系列类别,子类别和链接。基本上,在主要类别下的层次结构中列出了数百个链接。主要类别包含1到4个深度级别(即一些主要类别包含直接链接,而其他类别包含3个级别的子类别,导致直接链接)。

页面是使用Angular构建的,因此单击子类别链接将基本上更新模型以加载适当的数据,而单击直接链接将在外部窗口中打开URL。在水平之间来回移动有一个面包屑。单击某个类别后,用户将进入新视图,其中显示其下的所有子类别,包括该级别的所有直接链接。从这里,用户可以查看任意数量的级别,直到找到所需的直接链接。关键是,层次结构的级别不一致。

这一部分并不是那么重要,因为我已经开发了一个类,用于通过循环遍历各个级别来测试各个级别的链接,以打开找到的每个直接链接URL。但我想概述一下页面的设置方式。它不仅仅是一个要测试的链接列表 - 而是一个多级层次结构,可以链接到外部站点。

正如我所提到的,Selenium测试工作正常。 Java类从Excel工作表中读取预期的层次结构和URL,在页面中导航,直到找到直接链接,打开它,并验证加载的页面是否包含预期的URL。在同一个Excel工作表中,程序根据测试结果写入PASS或FAIL值。

我遇到的问题是将现有的Selenium示例转换为Cucumber步骤定义。我看到的最大问题是依赖嵌套循环来检查所有直接链接的层次结构级别。我不太明白如何在Cucumber中使用循环。我读的越多,它看起来就越不适合使用Cucumber功能。我是否错误地尝试使用Cucumber来测试像这样的链路测试运行器?我似乎无法映射合理数量的功能和步骤定义。到目前为止,我理解Cucumber的方式是你编写有限数量的特征,这些特征使用@ Given,@ When,@ Thhen等注释映射到方法(即每个测试用例分别映射出来)。您必须确切地知道要运行的测试用例的数量,而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();
}

1 个答案:

答案 0 :(得分:1)

我认为黄瓜不是为此制作的,你应该测试一些规格,而不是打开页面。 您不希望几乎每个断开的链接都有失败的测试。

有些选项是:

  1. 使用一些已知的工具(如果您没有任何安全限制,即使在线)也可以检查您的所有网站是否有损坏的链接

  2. 找到一个与黄瓜一起使用的库,它会自动抓取所有页面并检查损坏的链接。您可以将此选项集成到一个步骤中。

  3. 编写/搜索自定义脚本,该脚本会抓取所有网页并检查所有链接并在您的方案中使用

  4. 我认为使用脚本来抓取和检查链接比将链接硬编码到文件中是一种更好的方法。

    我建议仅在您拥有自动套件的情况下将此功能集成到方案中,并且对于每次运行,您还要检查这些功能。