Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium[Java]:如何让它等到一个表被刷新?_Java_Selenium_Selenium Webdriver - Fatal编程技术网

Selenium[Java]:如何让它等到一个表被刷新?

Selenium[Java]:如何让它等到一个表被刷新?,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,假设我有一个网页,其中有记录,显示在一个表中(有多个列)。现在有了搜索输入框和搜索按钮。使用这些我在表中搜索id为的记录 我正在使用隐式等待,它在大多数情况下似乎工作正常,但在这种情况下失败: 在使用隐式等待登录后,我让页面加载表中的所有数据 在搜索输入框中输入id并单击搜索按钮 现在我只希望有一条记录,而不是所有的记录 在搜索发生之前显示在表中 似乎它没有找到足够的时间刷新表,并且仍然显示所有记录,即使我搜索了(表中的id列): List idRows=driver.wait(,).unt

假设我有一个网页,其中有记录,显示在一个表中(有多个列)。现在有了搜索输入框搜索按钮。使用这些我在表中搜索id为的记录

我正在使用隐式等待,它在大多数情况下似乎工作正常,但在这种情况下失败:

  • 在使用隐式等待登录后,我让页面加载表中的所有数据
  • 在搜索输入框中输入id并单击搜索按钮
  • 现在我只希望有一条记录,而不是所有的记录 在搜索发生之前显示在表中
似乎它没有找到足够的时间刷新表,并且仍然显示所有记录,即使我搜索了(表中的id列):

List idRows=driver.wait(,).until(driver->driver.findElement(By.id(“column id”));
如果我在单击搜索按钮后使用Thread.sleep(),一切都很好,因为我看到表已按预期结果刷新。但是,我必须避免使用thread.sleep


我可以得到一些建议吗?如何让它等待,直到使用搜索的数据刷新表?

如果您知道您正在搜索的id是唯一的,在这种情况下,您可以这样做:

单击
搜索
按钮后,等待记录大小为1

wait.until(driver -> records.size() == 1);
如果搜索到的
id
不是唯一的,并且搜索后可以看到多个结果,可以通过以下方式执行:

单击
搜索
按钮之前,您可以获得记录的大小

int size = records.size();
单击
搜索
按钮后,您可以等待记录大小增加:

wait.until(driver -> records.size() < size);
wait.until(驱动程序->记录.size()
…我希望只有一条记录,而不是所有记录。。。使用搜索条件从所有记录中查找同一记录如何?请添加html源代码或提供更好的url。
wait.until(driver -> records.size() < size);