当前位置: 首页 > 知识库问答 >
问题:

Selenium:在java中等待上一个操作完成

许昆
2023-03-14

我是Selenium的新手。我正在尝试使用Selenium自动执行网页中表格的过滤(按type=New)和排序(按日期降序)步骤。我使用函数sendKeys()和Click()进行这些操作。

我在sendKeys和click函数之间使用了Thread.sleep(1000 ),以便在对列表进行排序之前按照类别对其进行过滤。

有没有办法让代码等到页面在sendKeys()之后被过滤,然后继续点击操作

共有1个答案

龚勇锐
2023-03-14

您可以使用WebDriveretc类来等待某些条件为真。在您的例子中,您正在对表进行排序,因此,在排序后使用等待对象来检查任何元素的位置是否存在。这是示例代码

WebDriverWait wait= new WebDriverWait(driver,30); //30 represents 30 secs
wait.until(ExpectedConditions.visibilityOfElementLocated(<Element locating stratergy>));

确保您将要提到的元素位置应该是表排序后元素的位置。

 类似资料:
  • 我可以让selenium webdriver“默认”等待它的每个操作执行吗?例如,设置任何“默认等待时间”,使其尝试每500毫秒点击每个元素10次?

  • 问题内容: 我不确定如何处理这种情况,因为我是iOS开发和Swift的新手。我正在像这样执行数据获取: 我的loadShows()函数解析从加载到UIWebView的网站中获取的大量数据。问题是我在loadShows函数中有一个等待10秒钟左右的计时器。这允许页面中的javascript在开始解析数据之前完全加载。我的问题是完成处理程序在我的loadShows()之前完成。 我想做的是为“ isC

  • 我正在Eclipse中使用Java运行selenium RC。我遇到的问题是selenium.click命令。我点击的链接加载一个新页面。有时需要5秒,有时需要2-3分钟。每次我看到页面加载时,在我的测试失败后,我立即得到消息“Timed out waiting for action to finish”。 我尝试使用Selenium.IsElementPresent检查正在加载的页面。但是,当我

  • 问题内容: 如何更改以下代码,以触发两个异步操作并有机会同时运行? 我需要做这样的事情吗? 问题答案: TL; DR 不要在获得承诺的问题中使用模式,而是分别等待它们;而是使用(至少现在): 虽然您的解决方案 确实 并行运行这两个操作,但如果两个诺言都被拒绝,它就无法正确处理拒绝。 细节: 您的解决方案并行运行它们,但始终等待第一个完成,然后再等待第二个。 如果您只想启动它们,并行运行它们,并获得

  • 问题内容: 我如何更改以下代码,以触发两个异步操作并有机会同时运行? 我需要做这样的事情吗? 问题答案: TL; DR 不要在获得承诺的问题中使用模式,而是分别等待它们;而是使用(至少现在): 虽然您的解决方案确实并行运行这两个操作,但是如果两个诺言都被拒绝,它就无法正确处理拒绝。 细节: 您的解决方案并行运行它们,但始终等待第一个完成,然后再等待第二个。如果您只想启动它们,并行运行它们,并获得两

  • 问题内容: 在我的程序执行过程中,启动了多个线程。线程数量取决于用户定义的设置,但是它们都使用不同的变量执行相同的方法。 在某些情况下,需要在执行过程中进行清理,其中一部分是停止所有线程,尽管我不希望它们立即停止,我只是设置了一个变量来检查它们是否终止。问题在于线程停止之前最多可能需要1/2秒。但是,我需要确保所有线程都已停止,然后才能继续进行清理。清理是从另一个线程执行的,因此从技术上讲,我需要