当前 BrowserStack API 最有用的功能之一是允许您将会话标记为失败的测试。
像任何 Selenium 集线器/节点系统一样,BrowserStack 不知道您为什么要向浏览器发送命令。它只是运行您请求的命令。因此,它无法知道测试何时失败。
但是您可以使用 API 告诉它测试失败,以便会话在 BrowserStack UI 中被标记为失败。然后,您可以仅过滤失败的会话以进行调查。
这是在 Java 中,而不是在 Python 中,但这里有一些示例代码,展示了如何更新会话以反映它们代表失败的测试。您只需传入 Selenium 会话 ID(在运行相关测试时需要保存)以及测试失败时出现的异常。
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;
import com.unblu.automation.support.settings.Prop;
import com.unblu.automation.support.settings.Settings;
import org.openqa.selenium.remote.SessionId;
public class BrowserStackUpdater {
private void markSessionAsFailed(SessionId sessionId, Throwable e) {
var url = "https://api.browserstack.com/automate/sessions/" + sessionId + ".json";
try {
var userName = "BROWSERSTACKUSERNAMEHERE";
var key = "BROWSERSTACKKEYHERE";
var result = Unirest.put(url)
.basicAuth(userName, key)
.field("status", "failed")
.field("reason", e.toString())
.asString();
System.out.println("Marking test failed; reply from BrowserStack: " +
result.getStatus() + " : " + result.getBody());
}
catch (UnirestException ue) { ue.printStackTrace(); }
}
public void markTestFailedInBrowserStack(Iterable<SessionId> sessionIds, Throwable e) {
var env = Settings.getString(Prop.runEnvironment);
if (env.equals("BrowserStack")) {
for (var sid : sessionIds) {
markSessionAsFailed(sid, e);
}
}
}
}