1

我正在尝试运行使用 selenium IDE 记录的测试。以下 html 由 IDE 生成

<tr>
    <td>clickAndWait</td>
    <td>css=span.blt-txt</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=pt1:svMenu:np1:6:cni1::disclosureAnchor</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=pt1:r5:0:mr1:gts1:gts_pc1:itFilterFieldValue::content</td>
<td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=pt1:r5:0:mr1:gts1:gts_pc1:cil1::icon</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=pt1:r5:0:mr1:gts1:gts_pc1:tt1:0::di</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=pt1:r5:0:mr1:gts1:gts_pc1:tt1:1:astTreeSNo</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=pt1:r1:0:rAstDtl:0:cb4</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id('pt1:ptGeneric:ot1::_afrTtxt')/x:div/x:h1</td>
    <td></td>
</tr>

当我运行测试/执行命令时,我收到一条错误消息 [error] Element id=pt1:r5:0:mr1:gts1:gts_pc1:tt1:0::di not found

有什么想法可以解决这个问题吗?

4

2 回答 2

0

在测试用例中使用生成的 ID 通常是个坏主意。当服务器重新启动/数据更改时,这些 ID 也会发生变化。

无论如何,您的问题似乎是经典的时间问题。单击某些内容/页面更改后,您的元素是否加载了 AJAX?如果是,Selenium 会在它们完全加载之前尝试单击它们。您应该waitForElementPresent在单击导致问题的元素之前使用。

通常,将 Selenium IDE 用于 AJAX 繁重的页面使用起来很容易变得困难。考虑切换到手动 Selenium RC 编写,或者更好的是 Selenium WebDriver。您可以两全其美 - 首先在 IDE 中单击测试,然后以任何语言将代码导出到 WebDriver,进行必要的更改,添加等待(隐式通常就足够了),您就完成了。

于 2013-07-22T10:36:21.523 回答
0
  1. id 似乎是生成的尽量不要使用这个 id 或使用包含(尝试使用其他 xpath)
  2. 我只会使用 id 的最后一个单词(你需要检查它) 3.你可以突出显示你在哪里

包含 ./li[contains(.,'Model')]] 的示例

于 2013-07-18T09:41:32.743 回答