Selenium IDE - WaitFor 在不应该通过的时候通过
Selenium IDE - WaitFors that are passing when they shouldnt
我有一个自动填写表格的小测试用例。
此表单是来自 sagepay 的 iFrame(我知道这可能会导致一些问题)
此表单没有名称,class 或 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 > div > 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 事先都通过让我知道元素在那里,但接下来就是问题了!
有什么建议吗?我试过在网上寻找其他提示,但没有找到任何东西。我能想到的唯一其他选择是使用 url 直接连接到 sagepay 网站,但我不需要。
我在我测试的站点上的许多搜索表单中遇到了同样的问题。我发现对我有用 (YMMV) 的是安装插件 Implicit Wait (https://addons.mozilla.org/en-US/firefox/addon/selenium-ide-implicit-wait/),在一些麻烦的情况下,在同一定位器上有一个 WaitForElementPresent,紧接着是一个 VerifyElementPresent。
当我第一次开始使用 Selenium IDE 时,我用了很多 "pauses",但发现我能够消除这些并提高测试的执行速度和可靠性。
克伦达图
我发现了一个主要问题,以及解决它的方法(尽管我研究过并发现 Implicit Wait 插件很有用)
我遇到的主要问题是等待错误弹出窗口。问题是关于一个点击命令然后重新加载页面,我发现下面是更好的等待。
waitForText | locator | regex:.+?
这让我可以等到错误出现,因为 WaitForVisible 和 WaitForElementPresent 都给了我假通行证
我有一个自动填写表格的小测试用例。
此表单是来自 sagepay 的 iFrame(我知道这可能会导致一些问题)
此表单没有名称,class 或 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 > div > 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 事先都通过让我知道元素在那里,但接下来就是问题了!
有什么建议吗?我试过在网上寻找其他提示,但没有找到任何东西。我能想到的唯一其他选择是使用 url 直接连接到 sagepay 网站,但我不需要。
我在我测试的站点上的许多搜索表单中遇到了同样的问题。我发现对我有用 (YMMV) 的是安装插件 Implicit Wait (https://addons.mozilla.org/en-US/firefox/addon/selenium-ide-implicit-wait/),在一些麻烦的情况下,在同一定位器上有一个 WaitForElementPresent,紧接着是一个 VerifyElementPresent。
当我第一次开始使用 Selenium IDE 时,我用了很多 "pauses",但发现我能够消除这些并提高测试的执行速度和可靠性。
克伦达图
我发现了一个主要问题,以及解决它的方法(尽管我研究过并发现 Implicit Wait 插件很有用)
我遇到的主要问题是等待错误弹出窗口。问题是关于一个点击命令然后重新加载页面,我发现下面是更好的等待。
waitForText | locator | regex:.+?
这让我可以等到错误出现,因为 WaitForVisible 和 WaitForElementPresent 都给了我假通行证