Testing Selenium IDE测试所有链接
我正在尝试使用Selenium IDE测试web应用程序。在一个页面上,有几个链接触发模式窗口。我想测试页面上的所有链接,以确保所有导致模态弹出 每个链接都有一个类“modal”,所以我想我可以在IDETesting Selenium IDE测试所有链接,testing,selenium,modal-dialog,selenium-ide,Testing,Selenium,Modal Dialog,Selenium Ide,我正在尝试使用Selenium IDE测试web应用程序。在一个页面上,有几个链接触发模式窗口。我想测试页面上的所有链接,以确保所有导致模态弹出 每个链接都有一个类“modal”,所以我想我可以在IDEcss=a.modal中更改目标值,但这只能找到第一个链接 我已经找到了一些解决方案,但是它们使用Selenium RC和Java/Python,并且不能直接转换到IDE 我知道IDE没有那么强大,但我为非程序员设置了它,到目前为止,它对他们来说非常简单。使用while循环,这个XPath表达式作
css=a.modal
中更改目标值,但这只能找到第一个链接
我已经找到了一些解决方案,但是它们使用Selenium RC和Java/Python,并且不能直接转换到IDE
我知道IDE没有那么强大,但我为非程序员设置了它,到目前为止,它对他们来说非常简单。使用while循环,这个XPath表达式作为定位器:
//a[contains(@class,'modal')]
//a[contains(@class,'modal')][1]
,//a[contains(@class,'modal')][2]
等应该指向您要查找的链接
如果您不熟悉Selenium IDE,请参阅以获取有关如何在其中执行while循环的更多信息。尝试此方法(您必须下载此方法):
商店购物
css=a.modal
链接
商店
0
我
标签
l1
格特瓦尔
storedVars.i++
点击
//后代::a[包含(@class,'modal')][${i}]
戈托夫
--storedVars.links
l1
在最后一个命令(gotoIf)之前插入您的断言,可能会弹出关闭窗口。我必须仔细阅读,我要感谢@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>
打开
/注销
单击并等待
链接=论坛
storeXpathCount
//p[3]/span/a[contains(@class,'modal')]
使用者
商店
1.
我
虽然
storedVars.i=storedVars.users
点击
//后代::a[包含(@class,'modal')][${i}]
waitForText
css=h2
您没有登录
点击
css=#交叉按钮a img
商店
javascript{storedVars.i++}
结束时
我不会选择任何一个答案,因为它们都是最终解决方案的组成部分 谢谢你。但是,该链接没有显示如何使用xpath获取链接列表。任何更具体的都将不胜感激!您可以“假装”
//a[contains(@class,'modal')]
是链接列表(它实际上只是一个定位器/选择器),//a[contains(@class,'modal')][1]
是第一个链接,//a[contains(@class,'modal')][2]
是第二个链接,等等。很高兴您解决了您的问题。但是在可能的情况下,尝试使用ID、链接、名称和css来代替xpath。我的意思是StoreCsCount比storeXpathCount更可取。另外,如果所有链接都有一个公共父链接,则可以使用click | css=a.modal:n子链接(${i})
storecscount比storeXpathCount更可取
为什么?
<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>