有没有办法在使用Selenium运行自动化测试用例时捕获浏览器日志?我发现了一篇关于如何在Selenium中捕获JavaScript错误的文章.但这仅适用于Firefox,仅适用于错误.我想得到所有的控制台日志.
我正在使用Selenium通过Python API绑定在Chrome中运行测试,而我无法确定如何配置Chrome以使console.log
加载测试的输出可用.我看到WebDriver对象上有get_log()
和log_types()
方法,我看过Get chrome的控制台日志,它显示了如何用Java做事.但我没有LoggingPreferences
在Python API中看到相当于Java的类型.有没有办法完成我需要的东西?
我正在使用selenium的python语言绑定.正在测试的应用程序是WEBRTC应用程序,它将调试信息写入浏览器的控制台日志.运行测试时需要获取这些日志信息.当浏览器在同一系统上运行时,我能够获取日志,但是当我在远程浏览器上使用Grid运行相同的代码时,即使它们出现在浏览器中,也不会返回日志.在将节点配置到集线器时,我也尝试使用-browserConsoleLog选项,但即使这样也不起作用.
chrome_opts=webdriver.ChromeOptions()
desired_caps = chrome_opts.to_capabilities()
desired_caps.update({'loggingPrefs':{ 'browser':'ALL'}})
Run Code Online (Sandbox Code Playgroud)
通过启用如上所示的日志记录首选项,我可以在本地运行时从浏览器获取console-api和网络日志,如下所示:
driver=webdriver.Chrome(desired_caps)
driver.get(app_url)
logs = driver.get_log("browser")
# returns all the console-api, network and browser logs as I read from one of the posts
for log in logs:
if log.get('source')=='console-api':
print log.get('message')
Run Code Online (Sandbox Code Playgroud)
但是当我使用与远程浏览器相同的所需功能时,如下所示,get_logs不会返回控制台日志,尽管它出现在浏览器控制台中
driver=webdriver.Remote(command_executor=hub_url,desired_capabilities=desired_caps)
有帮助吗?
python selenium selenium-grid selenium-chromedriver selenium-webdriver
运行测试后,我想使用Selenium WebDriver + Java收集控制台中显示的所有控制台错误消息(打开Firebug - >单击控制台 - >单击错误).
我尝试了这里提到的答案,但它只显示"警告","信息"的消息,但不显示"错误"的消息
我只想要控制台错误,如 -
有人可以帮我如何获取这些控制台日志吗?
I am writing using C#
, selenium
chromeWebDriver
. When I try to read the browser console log file with selenium
I get:
System.NullReferenceException: 'Object reference not set to an instance of an object.'
private void button1_Click(object sender, EventArgs e)
{
ChromeOptions options = new ChromeOptions();
options.SetLoggingPreference(LogType.Browser, LogLevel.Warning);
IWebDriver driver = new ChromeDriver(options);
driver.Url = "https://www.google.com/";
var entries = driver.Manage().Logs.GetLog(LogType.Browser); // System.NullReferenceException
foreach (var entry in entries)
{
Console.WriteLine(entry.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道之前是否曾经问过这个问题,但是我想要做的是从浏览器本身的错误控制台获取数据(如果它支持它),这将是用户发送时的数据错误报告它会解决与我网站上的页面相关的任何错误,例如代码中的拼写错误以及其他某种方式可以解决的问题.此外,在这方面有没有办法将错误从控制台传递到可用的格式?如果这是不可能的,那么我可以告诉他们复制和粘贴网站本身的内容.
我现在想到了这一点,因为我正在考虑如何使错误报告系统运行得更好,因为整个事情基本上是在浏览器中运行而对于后端我可以很容易地只查看错误日志但是对于前端即javascript位事情并非如此轻松.
因此,要在一个小语句中完成所有这一切,有一种简单的方法从错误控制台获取数据并能够通过javascript发送到表单或类似的东西.
如何检查浏览器控制台是否有错误?
例如,我已经使用Selenium引发了浏览器(firefox的chrome),并且我已经使用Selenium WebDriver完成了一些操作.之后,我想知道Web控制台中是否有任何错误.
有没有办法告诉WebDriver在C#Selenium测试中打开Chrome开发人员工具控制台,或者在运行Selenium测试时让控制台打开而不破坏它们的其他方法?
或者能够以编程方式将输出读取到控制台?
到目前为止,我已经尝试在测试运行时手动打开控制台(CTRL+ SHIFT+ I),但这确实每次都会破坏测试.
c# testing google-chrome google-chrome-devtools selenium-webdriver
我在Selenium WebDriver(C#)中为Chrome浏览器编写了以下微测试(没有用,但这里不是这样):
[Test]
public void T2_API_001_PrintingAlerts()
{
pgactions.OpenDataset(driver, settings.dataset); // opening page
for (int i = 0; i < 10; i++)
{
((IJavaScriptExecutor)driver).ExecuteScript("TsTable.Admin.log('this is error message', true);");
}
var logs = driver.Manage().Logs.GetLog(LogType.Browser);
foreach (var log in logs)
{
Console.WriteLine(log.ToString());
}
Thread.Sleep(100000);
}
Run Code Online (Sandbox Code Playgroud)
我希望在VS的调试控制台中看到(就像我在WebDriver启动的Chrome浏览器实例中看到的那样):
[14:02:22.816] Settings valid!
randomTable.js:6711 [14:02:22.976] Constructing table...
randomTable.js:6711 [14:02:22.976] Validating 32 rows data set...
( some more irrelevant rows )
randomTable.js:6711 [14:02:23.375] ...DONE (0.399 sec)
randomTable.js:6711 [14:02:24.949] this is error message
randomTable.js:6711 [14:02:25.060] this is error message …
Run Code Online (Sandbox Code Playgroud)