Selenium IDE [错误]找不到元素id = cmp_admin

时间:2013-04-04 13:04:42

标签: selenium-ide

我使用selenium IDE 1.9.0来记录测试。 请告诉我我没有错,以及如何解决问题。

以下是我记录测试的步骤。 1.我使用用户名和密码登录了该站点 2.导航到搜索会员页面以输入会员姓名,点击系统引导我到会员资料页面的名称链接。

脚本停在此行:

ClickAndWait  id=cmp_admin

我第一次玩脚本时没有任何错误。 8小时后运行脚本,它会提示我以下错误:

[error] Element id=cmp_admin not found

我使用调试功能来查看出错的地方。以下是调试窗格中显示的消息:

[debug] modifySeparateTestWindowToDetectPageLoads: already polling this window: selenium1365079281311 
[debug] getCurrentWindow newPageLoaded = false 
[error] Element id=cmp_admin not found
[debug] commandError 
[debug] testComplete: failed=true

这是Selenium IDE生成的html代码

<tr>
    <td>open</td>
    <td>/</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=nd_home</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>id=cmp_admin</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=quicksearch_anchor</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>css=img[alt=&quot;Member&quot;]</td>
    <td></td>
</tr>
<tr>
    <td>type</td>
    <td>id=search_name</td>
    <td>suzy</td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>link=Balagia, Suzy</td>
    <td></td>
</tr>
</tbody></table>
</body>
</html>

2 个答案:

答案 0 :(得分:3)

如果在点击一些时间点击加载页面后点击任何按钮或链接,如果页面未完全加载,则selenium ide找不到ID或下一个元素的名称。要使用Pause , waitfortext, clickandwait命令

解决此类问题

我在代码中进行了一些更改,请运行并让我知道它对您有用。

<tr>
    <td>open</td>
    <td>/</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=nd_home</td>
    <td></td>
</tr>
 <tr>
    <td>pause</td>
    <td>1500</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>id=cmp_admin</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=quicksearch_anchor</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>css=img[alt=&quot;Member&quot;]</td>
    <td></td>
</tr>
<tr>
    <td>type</td>
    <td>id=search_name</td>
    <td>suzy</td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>link=Balagia, Suzy</td>
    <td></td>
</tr>
</tbody></table>
</body>
</html>

答案 1 :(得分:1)

这可能是一些事情。首先,是您在页面上寻找的元素(id = cmp_admin),仍称为cmp_admin?从您的代码中,您似乎必须单击id = nd_home,然后加载包含cmp_admin的页面。如果是这种情况,很可能页面还没有完成加载,所以元素还没有。尝试在点击nd_home之间使用waitfor命令,如下所示:

点击| id = nd_home |

waitForElementPresent | id = cmp_admin |

clickAndWait | id = cmp_admim |

您也可以尝试暂停,等待几秒钟,但我发现waitfor命令不那么脆弱,特别是如果您有大量的Ajax请求或必须加载的元素。

Klendathu