Testing Selenium:在下拉列表中循环遍历每个

Testing Selenium:在下拉列表中循环遍历每个,testing,selenium,Testing,Selenium,我用它来减轻我的测试负担,我有大约1000个不同的下拉列表组合,分布在多个页面和下拉列表中,需要测试。基本上,我想做的是选择a中的每一项,单击Submit按钮,选择第一项、第二项、第三项等。在结果页面的下拉列表中,单击Submit,然后返回并依次选择下一项。每次,它都应该断言与所选下拉列表值相关的某个值出现在最后一页上。有人知道这种逻辑在Selenium中是否可行吗 我很难解释这一点,所以希望这段伪代码能把事情弄清楚 foreach option in select select optio

我用它来减轻我的测试负担,我有大约1000个不同的下拉列表组合,分布在多个页面和下拉列表中,需要测试。基本上,我想做的是选择a中的每一项,单击Submit按钮,选择第一项、第二项、第三项等。在结果页面的下拉列表中,单击Submit,然后返回并依次选择下一项。每次,它都应该断言与所选下拉列表值相关的某个值出现在最后一页上。有人知道这种逻辑在Selenium中是否可行吗

我很难解释这一点,所以希望这段伪代码能把事情弄清楚

foreach option in select select option submit form foreach option in select select option submit form assert that page contains text that matches selected values 编辑:我在录音机播放时从下拉列表中选择了值,但录音机似乎没有选择所选的下拉列表值。我也不知道如何在一个特定的环境中为每个人执行操作

我的第一个问题是这是否可能。如果是的话,有人能告诉我正确的方向让我开始吗


编辑2:我不反对使用另一个web自动测试工具。如果有人对免费替代品有任何建议,请随时提出建议。

您使用的是哪种语言?如果您只是通过编写HTML来使用Selenium,我建议您切换到编程语言并使用Selenium RC-绑定可用于多种语言,如Java和Python。在Java中,我相信以下内容可以满足您的要求:

void test(Selenium browser, String startPageUrl,
          String firstFormLocator, String firstSelectLocator,
          String secondFormLocator, String secondSelectLocator) {
    browser.open(startPageUrl);
    for (String option : browser.getSelectOptions(firstSelectLocator)) {
        browser.open(startPageUrl);
        browser.select(firstSelectLocator, "label=" + option);
        browser.submit(firstFormLocator); // Or click the submit button
        for (String subOption : browser.getSelectOptions(secondSelectLocator) {
            browser.open(startPageUrl);
            browser.select(firstSelectLocator, "label=" + option);
            browser.submit(firstFormLocator); // Or click the submit button
            browser.select(secondSelectLocator, "label=" + subOption);
            browser.submit(secondFormLocator); // Or click the submit button
            // Do your assertions
        }
    }
}
代码不是完全可读的,因此可能需要一些时间使用页面对象模式稍微抽象页面。这也有助于使代码更易于维护,例如,当您更改元素的ID时,您只需要在页面对象中更改它,而不是在每个测试中更改它

还要记住,这样做1000次不会很快。如果您在web界面的下方进行类似的测试,以便更快地从测试中获得反馈,然后测试web界面是否正确地使用了较低的层,那么可能值得一看。还有,你真的需要1000次测试吗?这里的测试似乎有些冗余——如果最后999个测试通过,第1000个测试会失败吗?

如果您不想做foreach,也可以使用index=功能,例如forint i=0;我