我正在尝试使用 Selenium IDE 来测试 Web 应用程序。在一页上,有几个链接会触发模态窗口。我想测试页面上的所有链接以确保所有导致模式弹出。
每个链接都有一个“模态”类,所以我想我可以在 IDE 中更改目标值,css=a.modal
但只能找到第一个链接。
我找到了一些解决方案,但他们将 Selenium RC 与 Java/Python 结合使用,并且无法直接翻译到 IDE。
我知道 IDE 没有那么强大,但我正在设置它以供非程序员使用,到目前为止,这对他们来说真的很简单。
我正在尝试使用 Selenium IDE 来测试 Web 应用程序。在一页上,有几个链接会触发模态窗口。我想测试页面上的所有链接以确保所有导致模式弹出。
每个链接都有一个“模态”类,所以我想我可以在 IDE 中更改目标值,css=a.modal
但只能找到第一个链接。
我找到了一些解决方案,但他们将 Selenium RC 与 Java/Python 结合使用,并且无法直接翻译到 IDE。
我知道 IDE 没有那么强大,但我正在设置它以供非程序员使用,到目前为止,这对他们来说真的很简单。
我必须阅读很多内容,我要感谢@ohaal 和@aleh 的投入。我使用了他们建议的链接以及更多的外部阅读来达到这样的解决方案:
<tr>
<td>open</td>
<td>/logout</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Forum</td>
<td></td>
</tr>
<tr>
<td>storeXpathCount</td>
<td>//p[3]/span/a[contains(@class, 'modal')]</td>
<td>users</td>
</tr>
<tr>
<td>store</td>
<td>1</td>
<td>i</td>
</tr>
<tr>
<td>while</td>
<td>storedVars.i<=storedVars.users</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//descendant::a[contains(@class, 'modal')][${i}]</td>
<td></td>
</tr>
<tr>
<td>waitForText</td>
<td>css=h2</td>
<td>You are not logged in</td>
</tr>
<tr>
<td>click</td>
<td>css=#cross_button > a > img</td>
<td></td>
</tr>
<tr>
<td>store</td>
<td>javascript{storedVars.i++}</td>
<td></td>
</tr>
<tr>
<td>endWhile</td>
<td></td>
<td></td>
</tr>
我没有选择任何一个答案,因为他们都为最终解决方案做出了贡献。
使用 while 循环,并将此 XPath 表达式用作定位器://a[contains(@class, 'modal')]
//a[contains(@class, 'modal')][1]
,//a[contains(@class, 'modal')][2]
等等应该指向你所追求的链接。
如果您不熟悉 Selenium IDE,请参阅此链接以获取有关如何在 Selenium IDE 中执行 while 循环的更多信息。
试试这个(你必须下载这个扩展):
<tr>
<td>storeCssCount</td>
<td>css=a.modal</td>
<td>links</td>
</tr>
<tr>
<td>store</td>
<td>0</td>
<td>i</td>
</tr>
<tr>
<td>label</td>
<td>l1</td>
<td></td>
</tr>
<tr>
<td>getEval</td>
<td>storedVars.i++</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//descendant::a[contains(@class, 'modal')][${i}]</td>
<td></td>
</tr>
<tr>
<td>gotoIf</td>
<td>--storedVars.links</td>
<td>l1</td>
</tr>
在最后一个命令(gotoIf)之前插入您的断言和可能的弹出窗口关闭。