我想测量微调器元素的多个部分的加载时间。 HTML 看起来像这样:
<div id="loading">
<div id="spinner">
<div class="spinner-icon"></div>
</div>
<p class="spinner-text">Please wait</p>
</div>
我对首先加载/显示哪个元素感兴趣?图标?文本?
我在想这样的事情:
Date t1 = new Date();
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector("#loading")));
Date t2 = new Date();
long duration = t2.getTime() - t1.getTime();
但是,我可以使用交织等待吗?我可以在单个脚本中执行此操作吗?
最佳答案
正在寻找这样的东西吗?
long[] loadTime = wait.until(new Function<WebDriver, long[]>() {
Date start = new Date();
long[] loadTimes = new long[] { 0, 0, 0, 0 };
String[] selectors = new String[] { "#loading", "#spinner", "#spinner .spinner-icon", "#spinner .spinner-text" };
@Override
public long[] apply(WebDriver t) {
int invisible = 0;
for (int i = 0; i < selectors.length; i++) {
if (!t.findElement(By.cssSelector(selectors[i])).isDisplayed()) {
if (loadTimes[i] == 0) {
loadTimes[i] = new Date().getTime() - start.getTime();
}
invisible++;
}
}
return invisible == 4 ? loadTimes : null;
}
});
关于selenium - 测量 Selenium 中多个 Web 元素的加载时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54921892/