当前 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);
            }
        }
    }
}