Selenium PHP单元如何等待网格中的过滤操作

时间:2014-08-28 12:15:37

标签: php selenium phpunit wait

我有一个带过滤选项的网格。 每当我将凯斯发送到过滤字段时,它将开始搜索

我正在使用Selenium:facebook webdriver with phpunit。

$this->webDriver->findElement(WebDriverBy::xpath('//*[@id="datatable_classrooms_wrapper"]/div[3]/div[2]/div[3]/div/table/tfoot/tr/td[1]/div/input'))->click();  
$var = "Selenium";
for ($i = 0; $i<strlen($var); $i++) {$character = \substr($var, $i,1);
$this->webDriver->getKeyboard()->sendKeys($character);
}
// Here it searches for the item $character in the grid
// More actions as followed, but how do I wait here until the searches are done?

在这里,我将在网格中搜索Selenium但是如何等待它完成过滤? 有时它可能需要12秒才能过滤。

我想我可以在其中添加一个sleep(15);,但如果它恰好超过15秒则不会起作用。 同样implicit waitexplicit wait也不会在这里发挥作用,因为发送密钥会尽可能正常。

有关我如何做到这一点的任何建议?

HTML:

<td class="dataTables_filter text-left" rowspan="1" colspan="1" style="width: 277px;"> 
<div class="input-group">
<input type="text" value="" data-position="1" data-type="text" class="form-control input-sm"></div></td>

1 个答案:

答案 0 :(得分:2)

好吧,如果你需要以某种方式等待直到搜索完成,这是我的想法:

  1. 搜索出现时是否有加载动画?如果是的话,它会对你有所帮助。您可以设置显式等待直到此加载动画消失,然后搜索将完成

  2. 可能的结果出现在某处(例如在表格中,我不知道)。所以你可以等到表格中的第一个元素出现

  3. 也许在搜索过程中某些属性发生了变化(例如在输入中),或者它被禁用,或者btn被禁用

  4. 也许在搜索过程中,您可以获得服务器发送的请求,并验证其内容,

  5. 我不知道还有什么...我需要看到它。无论如何,试着找一些在搜索过程中(或搜索后)发生变化的地方,它会帮助你