2017-06-14 85 views
0

我有这个硒测试(它的一部分)。硒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>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>goBack</td>之后的步骤<td>clickAndWait</td>处遇到错误。日志说,

Element xpath =(// a [contains(text(),'Show')])[5]找不到

我的问题,如何返回并等到页面加载后再执行其他操作。

回答

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> 
+0

'click'后,或者'goBack'之后? –

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. 

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

<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> 
+1

无论何时使用'waitForPageToLoad',它都会等待给定时间范围内的完整页面加载。因此,在你的情况下,一旦你使用'goBack'命令返回导航,然后使用'waitForPageToLoad',它将首先返回导航并等待页面加载,然后转到下一个动作。 –

0

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

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