我有一个小型测试用例,可以自动填写表单。
此表单是来自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 > 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&#39;事先通过让我知道元素在那里,但后来就是问题!
有什么建议吗?我尝试过在线查找其他提示,但没有找到任何提示。只有我能想到的其他选择是直接使用网址连接到sagepay网站,但我不需要。
答案 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都给了我一次虚假传递