Selenium IDE命令assertTextPresent不起作用

时间:2013-02-07 17:00:01

标签: selenium selenium-webdriver selenium-ide

我正在尝试在Selenium IDE(Firefox)中使用命令“assertTextPresent”。我这样配置:

Command: assertTextPresent
Target: <th align="center" abbr="Monday" scope="col" style="background-color:#EFEDF5;font-weight:normal;">Mon</th><th align="center" abbr="Tuesday" (truncated for brevity)
Value: (left empty)

据我所知,由于其中的HTML代码,Selenium不会将我的“目标”与呈现页面的源匹配。所以它总是会失败,即使它应该通过。我怎样才能使这个断言起作用?

4 个答案:

答案 0 :(得分:2)

assertTextPresent查找您指定在页面上任何位置的值。您在目标中传递的值是IDE正在查找的文本。它确实在寻找整个<th>标签作为“文本”显示在页面的某个地方,我假设它没有显示。

使用该功能的正确方法是在目标中传递您要查找的文本,例如“Mon”或您要查找的任何内容。请记住,这是区分大小写的。由于此功能不关心其外观,因此您不指定实际目标。我发现在大多数情况下,这个功能通常没有足够的特异性来保证可靠性。

<tr>
    <td>assertTextPresent</td>
    <td>Mon</td>
    <td></td>
</tr>

我更喜欢使用assertTextverifyText,因为它需要一个目标,让您更具体地查找文本。

<tr>
    <td>assertText</td>
    <td>css=th[abbr="Monday"]</td>
    <td>Mon</td>
</tr> 

我不完全确定abbr属性是有效的选择器。有很多方法可以定位你的元素,我只是用它作为一个简单的例子,因为它是你的snippit的一部分。

答案 1 :(得分:2)

如果您正在测试页面中存在的唯一文本,则可以使用

Command: assertTextPresent
Target: your search text

在目标中,您可以放置​​要搜索的文本。

如果您想检查您可以使用的位置上的文字

Command: verifyText
Target: id,name,xpath of the position
value:  your search text

答案 2 :(得分:0)

根据我在此处看到的内容,您应该使用assertElementPresent而不是assertTextPresent,因为您指定了一个元素作为目标,而不仅仅是<th>元素的文本。 / p>

如果您仍想使用assertTextPresent,您只需将“星期一”作为目标即可。因为它的目标/参数是它正在搜索的内容。

答案 3 :(得分:0)

您可能需要3个部分进行assertTextPresent测试:

Command: assertTextPresent
Target: //th[@abbr="Monday"]
Value: Mon

这将查看包含attriute @abbr等于“Monday”的单元格,并查看内容(文本)是否设置为“Mon”。

要测试所有单元格,您将一个接一个地执行多个assertTextPresent命令以测试所有7天。

如果你想“升级”你会做类似的事情:

Command: assertTextPresent
Target: //tr
Value: <th align="center" abbr="Monday" scope="col" style="background-color:#EFEDF5;font-weight:normal;">Mon</th><th align="center" abbr="Tuesday" (truncated for brevity)

通常最好尝试选择HTML元素,例如使用特定属性,例如id =“row_1”或name =“first_row”。然后你的目标是// tr [@ id =“row_1”]或// tr [@ name =“first_row”]。

Target是“DOM搜索语法”,用于告诉Selenium IDE在哪里可以找到您要查找的文本。值是要测试的文本。