我使用Selenium WebDriver 3.14
并在Chrome
浏览器中执行测试。我需要在执行时间中测量页面的响应时间,以检查它是否在预定义值以下。如果它大于此值,则应执行一些其他操作。因此,我需要的解决方案不同于System.currentTimeMillis()
,因为此值的检查应在后台自动进行。这是一个类似于AJAX的窗口,因此当加载时间太长时,应使用脚本将其关闭。窗口示例:
答案 0 :(得分:6)
典型的解决方案是尝试/捕获等待。例如。如果下一步是单击加载完成后显示的按钮:
function myFunction() {
document.a.style.color = "black";
}
但是,如果在Selenium中使用隐式超时,则会出现一个常见问题。这不太好用,特别是在隐式超时时间长于LOADING_TIMEOUT的情况下,因为这会减慢 WebDriverWait wait = new WebDriverWait(driver, LOADING_TIMEOUT);
WebElement webElement;
try {
webElement = wait.until(elementToBeClickable(By.id(id)));
} catch (TimeoutException ex) {
// Close loading window
return;
}
webElement.click();
中的轮询周期。
在这种情况下,最简单的解决方案是暂时减少隐式超时:
wait.until()
答案 1 :(得分:2)
如果我的理解正确,您可以将selenium.waitForPageToLoad("100000");
中的时间减少到所需的预定义值,例如20秒。因此,如果您希望在20秒内未加载页面就停止加载,请尝试执行以下操作:
long start = System.currentTimeMillis();
try {
selenium.waitForPageToLoad("20000");
System.out.println("The page load is too long!");
} catch {
long timeToLoad= (System.currentTimeMillis()-start);
System.out.println("The page loaded in " +timeToLoad+ " seconds.");
}
答案 2 :(得分:2)
您应该尝试通过功能CapabilityType.LOGGING_PREFS
为Logging Preferences设置performance-log。
例如:
LoggingPreferences logs = new LoggingPreferences();
logs .enable(LogType.PERFORMANCE, Level.ALL);
caps.setCapability(CapabilityType.LOGGING_PREFS, logs);
您将获得如下的性能日志条目。
for (LogEntry entry : driver.manage().logs().get(LogType.PERFORMANCE)) {
System.out.println(entry.toString());
//do the needful
}
答案 3 :(得分:0)
我认为您是在寻找API测试而不是自动化测试。
Postman API Testing Setup and Usage Tutorial
希望这会有所帮助
编辑:
或者,一种更轻量级的API测试解决方案: