等待获取请求在 selenium 中完成

tot*_*eat 5 java ajax selenium get selenium-webdriver

对于这个例子,让我们看看网站 pinterest:

当我进行初始登录时,会加载引脚。为了获得更多的 pin,我需要滚动到页面的末尾,在有更多 pin 的请求之后(很多网站都像我想的那样工作)

所以我知道如何在 selenium 中进行滚动,但是我如何等待请求结束?

我的意思是,它不是在等待某个元素出现,那种元素(大头针)已经存在,但我正在等待其他元素出现。

如果我使用带等待的预期条件,它对第一批引脚有好处,但是添加到它们中的那些,我如何等待它们,例如:

当 pinterest 首次加载时->

WebDriverWait driverWait = new WebDriverWait(cd, 10, 1000);

element = driverWait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("thepins")));
Run Code Online (Sandbox Code Playgroud)

这对于初始加载非常有用,现在我滚动到页面底部

((JavascriptExecutor) cd).executeScript("window.scrollTo(0, document.body.scrollHeight)");
Run Code Online (Sandbox Code Playgroud)

现在取决于页面,加载到更多引脚(有时不是)我想在我做另一个滚动之前等待它们加载。

处理这种情况的最佳方法是什么?

小智 4

我的方法是使用页面上的元素数量。例如你可以这样做:

int pinCount = webDriver.findElements(By.xpath("thepins")).size();
Run Code Online (Sandbox Code Playgroud)

此时运行 jsExecutor 进行滚动,然后:

webDriverWait.until(ExpectedConditions.numberOfElementsToBeMoreThan(By.xpath("thepins"),pinCount ));
Run Code Online (Sandbox Code Playgroud)