2

我正在尝试在 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)

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

4

4 回答 4

2

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

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

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

我更喜欢使用assertTextorverifyText因为它需要一个目标,这样您就可以更具体地在哪里查找文本。

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

我不完全确定该abbr属性是否是有效的选择器。有很多方法可以定位您的元素,我只是将其用作一个简单的示例,因为它是您的代码片段的一部分。

于 2013-02-08T01:12:43.487 回答
2

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

Command: assertTextPresent
Target: your search text

在目标中,您输入要搜索的文本。

或者

如果您想检查某个位置的文本,您可以使用

Command: verifyText
Target: id,name,xpath of the position
value:  your search text
于 2013-02-08T07:21:09.960 回答
0

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

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

于 2013-02-07T18:20:04.630 回答
0

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

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

这将查看包含等于“星期一”的属性@abbr 的单元格,并查看内容(文本)是否设置为“星期一”。

要测试所有单元格,您将一个接一个地执行多个 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 在哪里可以找到您要查找的文本。值是要测试的文本。

于 2013-05-08T02:09:10.467 回答