当数据从计算中加载元素时,Selenium会等待

时间:2017-09-15 10:12:58

标签: selenium selenium-webdriver

考虑这种情况:

我们必须对计算中出现数据的元素执行element.getText()

页面上存在加载元素,但加载数据需要5秒钟。

显式等待和隐式等待两者都将查看元素是否存在,从1到5秒为真,它们将执行返回空文本。

我们可以在这个案子上等什么? 或者剩下的唯一解决方案是Thread.sleep(5000)

5 个答案:

答案 0 :(得分:0)

使用这种方式可以解决问题

 WebDriverWait wait = new WebDriverWait(driver,120);
 wait.until(ExpectedConditions.elementToBeClickable(By.id(id)));

答案 1 :(得分:0)

您是否尝试过此代码? 在我试图用unnessacary代码欺骗他之前,我遇到了同样的问题,并且它有效。

this.browser.waitForVisible(locator);
this.browser.getText(locator);

答案 2 :(得分:0)

我认为这取决于目前的情况。如果在您的应用程序中,元素以默认值存在,并且我们需要等待显示的值,那么我们可以创建Explicite等待更改的值。在这种情况下,更糟糕的情况是计算出的值与默认值相同,那么我们需要等待指定的整个超时。

答案 3 :(得分:0)

试试这个

   (new WebDriverWait(driver, 10))wait.until(ExpectedConditions.elementToBeClickable("element locator"));

答案 4 :(得分:0)

您可以使用其他等待方法来检查是否有任何查询仍处于活动状态。 如果返回0 - >这意味着你想要的文字被计算出来。

<PackageReference Include="System.Net.NameResolution" Version="4.3" />

这会导致等待ajax加载。