Selenium IDE - WaitFors在他们不应该通过的时候

时间:2015-07-03 11:42:06

标签: selenium-ide

我有一个小型测试用例,可以自动填写表单。

此表单是来自sagepay的iFrame(我知道这可能会导致一些问题)

此表单没有名称,类或ID(锁定它的含义有问题)

以下代码

<!--Sagepay-->
<tr>
    <td>waitForPageToLoad</td>
    <td></td>
    <td></td>
</tr>
<tr>
    <td>assertElementPresent</td>
    <td>css=img.sageimg</td>
    <td></td>
</tr>
<tr>
    <td>assertElementPresent</td>
    <td>//div[@id='holrightcontainer']/div[2]/div/div/img[2]</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=proceedButton</td>
    <td></td>
</tr>
<tr>
    <td>waitForElementPresent</td>
    <td>css=#formCardDetails &gt; div &gt; span.errortext</td>
    <td></td>
</tr>
<tr>
    <td>waitForElementPresent</td>
    <td>css=div.details-inner</td>
    <td></td>
</tr>
<tr>
    <td>waitForElementPresent</td>
    <td>css=iframe</td>
    <td></td>
</tr>
<tr>
    <td>waitForElementPresent</td>
    <td>name=cardnumber</td>
    <td></td>
</tr>
<tr>
    <td>waitForElementPresent</td>
    <td>name=cardpostcode</td>
    <td></td>
</tr>
<tr>
    <td>type</td>
    <td>name=cardnumber</td>
    <td>${cardNumber}</td>
</tr>
<tr>
    <td>type</td>
    <td>name=cardfirstnames</td>
    <td>${cardFirstName}</td>
</tr>
<tr>
    <td>type</td>
    <td>name=cardsurname</td>
    <td>${cardSurname}</td>
</tr>
<tr>
    <td>assertElementPresent</td>
    <td>name=startmonth</td>
    <td></td>
</tr>
<tr>
    <td>select</td>
    <td>name=startmonth</td>
    <td>${cardMonthStart}</td>
</tr>
<tr>
    <td>select</td>
    <td>name=startyear</td>
    <td>${cardYearStart}</td>
</tr>
<tr>
    <td>select</td>
    <td>name=expirymonth</td>
    <td>${cardMonthEnd}</td>
</tr>
<tr>
    <td>select</td>
    <td>name=expiryyear</td>
    <td>${cardYearEnd}</td>
</tr>
<tr>
    <td>type</td>
    <td>name=securitycode</td>
    <td>${cardSecurityCode}</td>
</tr>

现在变得棘手......它有时会跳过一些表单类型字段,并且会定期从3-6开始失败。

我以速度0运行我的测试,但这不应该是一个问题。

WaitFor&#39;事先通过让我知道元素在那里,但后来就是问题!

有什么建议吗?我尝试过在线查找其他提示,但没有找到任何提示。只有我能想到的其他选择是直接使用网址连接到sagepay网站,但我不需要。

2 个答案:

答案 0 :(得分:0)

我在测试的网站上遇到了许多搜索表单的问题。我发现对我有用的东西(YMMV)是安装插件隐式等待(https://addons.mozilla.org/en-US/firefox/addon/selenium-ide-implicit-wait/),在一些麻烦的情况下,在同一个定位器上有一个WaitForElementPresent,紧接着是一个VerifyElementPresent。

当我第一次使用Selenium IDE时,我使用了&#34;暂停&#34;相当多,但发现我能够消除这些并提高测试的执行速度和可靠性。

Klendathu

答案 1 :(得分:0)

我找到了一个主要问题,并找到了解决方法(虽然我做过Implicit Wait插件研究并发现它很有用)

我遇到的主要问题是等待错误弹出窗口。问题是关于点击命令,然后重新加载页面,我发现更好的等待是以下。

waitForText | locator | regex:.+?

这让我可以等到填充错误,因为WaitForVisible和WaitForElementPresent都给了我一次虚假传递