我正在使用Selenium来减轻我的测试负担,我有大约1,000种不同的下拉列表组合(分布在多个页面和下拉列表中),需要进行测试。基本上,我想要做的是选择每个<选项>在< select>内,单击“提交”按钮,在结果页面的下拉列表中选择一个项目(第一个,第二个,第三个等),单击“提交”,然后返回并选择下一个项目,序列。每次都应断言最终页面上存在某个值(与所选下拉列表值相关)。有人知道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
编辑:我在录音机正在播放时从下拉列表中选择了值,但似乎录音机没有拿起所选的下拉列表值。我也没能弄清楚如何为每个<选项>执行操作。在< select>。
中我遇到的第一个问题是它是否可能。如果是的话,有人可以指出我正确的方向让我开始吗?
编辑2:我不反对使用其他网络自动化测试工具。如果有人对免费替代方案有任何建议,请随时提出建议。
答案 0 :(得分:3)
使用Selenium的语言是什么?如果您只是通过编写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
}
}
}
代码不是完全可读的,因此使用Page Object模式略微抽象页面可能是值得的。这也有助于使代码更易于维护,例如,当您更改元素的ID时,您只需要在页面对象中更改它而不是每次测试。
另外请记住,这样做1000次并不会很快。如果您在Web界面下方进行类似测试以允许从测试中获得更快的反馈,那么可能值得一看,然后测试Web界面是否正确使用了较低层。另外,你真的需要1000次测试吗?这里的测试似乎有一些冗余 - 如果过去的999已经过去,第1000次测试会失败吗?