问题
我在 C# 中搜索了很多解决方案,但没有一个适合我。
我无法使用它们,因为缺少无法导入的对象或这些对象已被弃用。 (例如所需的能力)
我想做的事
我想做的就是在执行测试后,检查测试过程中是否出现问题。
当出现问题时,测试应该失败并显示消息。 (断言。失败)
这里的问题是我无法获取我想查看的日志。
我将展示我所尝试过的。
版本1:
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.SetLoggingPreference("performance", LogLevel.All);
var logs = driver.Manage().Logs.GetLog("performance");
这对我有用,但问题是我看不出真正的问题是什么。
消息输出仅显示发生了一些错误,但没有显示具体错误。
这是公认的解决方案,如下所示:
如何使用 Chrome 在 Selenium Webdriver 中设置性能日志记录 https://stackoverflow.com/a/56333865/13163366
无法在 Selenium C# 中获取 Chrome 性能日志 https://stackoverflow.com/a/60553029/13163366
版本2:
与版本 1 相同,略有变化
var logs = driver.Manage().Logs.GetLog(LogType.Browser);
这里的问题是我只得到一份日志,但我想从执行中获取所有日志。
版本3:
在我看来,这似乎是最新的解决方案,但我再次在访问对象时遇到问题。
C# Selenium 4:设置请求拦截 https://stackoverflow.com/a/67335693/13163366
版本 4:
我没有绑定这个,因为那不是直接的硒,但也许这会有所帮助。
如何查看 HttpWebRequest 类发送的原始 HTTP 请求? https://stackoverflow.com/a/25683524/13163366
更新:它不是这样工作的。
编辑 - 版本 5:
还有一些官方例子 https://www.selenium.dev/documentation/support_packages/chrome_devtools/使用 Chrome DevTools,但其中不是很多都是用 C# 编写的
就像是this https://dotjord.wordpress.com/2020/09/13/how-to-capture-network-activity-with-selenium-4-in-asp-net-core-3-1/应该可以,但我需要在测试中使用它,而不是在控制台应用程序中。
这是我目前的状态:
IDevTools devTools = driver as IDevTools;
DevToolsSession session = devTools.CreateDevToolsSession();
session.Network.ResponseReceived += ResponseReceivedHandler;
session.Network.Enable(new EnableCommandSettings());
driver.Navigate().GoToUrl("https://google.com");
用这个方法:
public static void ResponseReceivedHandler(object sender, ResponseReceivedEventArgs e)
{
Debug.WriteLine($"Url: { e.Response.Url } Status: { e.Response.Status } Type: { e.Response.MimeType } ");
}
更新2:
大多数时候我可以获得 e.Response.StatusText 消息并且总是有一个状态代码,我想看到的是网络选项卡中的 msg 对象。
(单击某个项目然后打开预览选项卡即可看到它)
我希望你能帮助我,它应该适用于 chrome 其他浏览器会很好,但特别是对于 chrome 它会有所帮助。