Selenium goBack等待

时间:2017-06-14 10:13:51

标签: selenium selenium-ide

我有这个硒测试(它的一部分)。

<tbody>
<tr>
    <td>open</td>
    <td></td>
    <td>localhost:8091</td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>link=Rest objects</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>xpath=(//a[contains(text(),'Show')])[3]</td>
    <td></td>
</tr>
<tr>
    <td>assertText</td>
    <td>xpath=(//div[not(div)][1])</td>
    <td>ID: 2</td>
</tr>
<tr>
    <td>goBack</td>
    <td></td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>xpath=(//a[contains(text(),'Show')])[5]</td>
    <td></td>
</tr>
<tr>
    <td>goBack</td>
    <td></td>
    <td></td>
</tr>
</tbody>.

我在Firefox中使用Selenium IDE。当我慢慢地运行它(切换速度)时,它运行良好。但是,当我尝试更快地运行它时,<td>clickAndWait</td>之后的步骤<td>goBack</td>会出现错误。日志说,

元素xpath =(// a [包含(text(),&#39;显示&#39;)])[5]未找到

我的问题是,在我执行其他操作之前,如何返回并等待页面加载。

3 个答案:

答案 0 :(得分:1)

你必须使用waitForPageToLoad命令adter点击元素直到页面加载然后执行其他操作

使用以下代码

<tr>
    <td>click</td>
    <td>xpath=(//a[contains(text(),'Show')])[5]</td>
    <td></td>
</tr>
<tr>
    <td>waitForPageToLoad</td>
    <td>10000</td>
    <td></td>
</tr>

答案 1 :(得分:0)

谢谢(@Trimantra软件解决方案)。

waitForPageToLoad这就是我需要的。 来自文档:

waitForPageToLoad(timeout)
    Arguments:

        timeout - a timeout in milliseconds, after which this command will return with an error

    Waits for a new page to load.

这是我的解决方案,我在waitForPageToLoad后使用goBack

<tbody>
<tr>
    <td>open</td>
    <td></td>
    <td>localhost:8091</td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>link=Rest objects</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>xpath=(//a[contains(text(),'Show')])[3]</td>
    <td></td>
</tr>
<tr>
    <td>assertText</td>
    <td>xpath=(//div[not(div)][1])</td>
    <td>ID: 2</td>
</tr>
<tr>
    <td>goBack</td>
    <td></td>
    <td></td>
</tr>
<tr>
    <td>waitForPageToLoad</td>
    <td>800</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>xpath=(//a[contains(text(),'Show')])[5]</td>
    <td></td>
</tr>
<tr>
    <td>goBack</td>
    <td></td>
    <td></td>
</tr>
</tbody>

答案 2 :(得分:0)

我看到了这个命令的goBackAndWait()变体。这可能对你有用。

通常我会建议使用waitFor来确保页面回到你想要的位置。如果可能的话,最简单的可能是waitForTitle。 waitForElementPresent&amp; waitForText也很好看。