我有一个带过滤选项的网格。 每当我将凯斯发送到过滤字段时,它将开始搜索
我正在使用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 wait
和explicit 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>
答案 0 :(得分:2)
好吧,如果你需要以某种方式等待直到搜索完成,这是我的想法:
搜索出现时是否有加载动画?如果是的话,它会对你有所帮助。您可以设置显式等待直到此加载动画消失,然后搜索将完成
可能的结果出现在某处(例如在表格中,我不知道)。所以你可以等到表格中的第一个元素出现
也许在搜索过程中某些属性发生了变化(例如在输入中),或者它被禁用,或者btn被禁用
也许在搜索过程中,您可以获得服务器发送的请求,并验证其内容,
我不知道还有什么...我需要看到它。无论如何,试着找一些在搜索过程中(或搜索后)发生变化的地方,它会帮助你