我使用的是Selenium 2.46.0版。 为了调试不同的问题(例如客户端问题),我想获取所有Web浏览器控制台内容(错误,警告......)
我尝试使用:
LogEntries logs1 = DefaultDriver.getWebDriver().manage().logs().get("client");
但获得了空日志条目......
BTW,我定义了这些功能:
capabilities = DesiredCapabilities.firefox();
LoggingPreferences logs = new LoggingPreferences();
logs.enable( LogType.CLIENT, Level.ALL );
capabilities.setCapability( CapabilityType.LOGGING_PREFS, logs );
webDriver = new FirefoxDriver( capabilities );
我还尝试了“驱动程序”和“浏览器”日志类型,但没有获得Web控制台内容。
知道该怎么做吗?
以下链接中的解决方案无效... Capturing browser logs with Selenium
答案 0 :(得分:0)
我不确定这是否有效。 但您可以尝试打开控制台,如下所示
Actions builder = new Actions(pbDriver);
builder.keyDown(Keys.CONTROL).sendKeys(Keys.F12).keyUp(Keys.CONTROL).perform();
然后使用selenium与控制台进行交互。
OR,
您可以通过从用户数据目录“手动”获取日志来尝试不太优雅的解决方案:
将用户数据目录设置为固定位置:
options = new ChromeOptions();
capabilities = DesiredCapabilities.chrome();
options.addArguments("user-data-dir=/your_path/");
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
从位于您上面输入的路径中的日志文件chrome_debug.log中获取文本
编辑:
我实际上尝试了问题中提到的方法,它对我有用。我使用的浏览器是Chrome。正如Siking指出的那样,我使用了.enable(LogType.BROWSER)来获取日志。 以下代码确实打印了整个运行期间捕获的所有日志。
LogEntries logEntries = pbDriver.manage().logs().get("browser");
for (LogEntry entry : logEntries) {
System.out.println(entry.getMessage());
我刚刚了解到,由于开发人员工具不是DOM模型的一部分,因此不能使用selenium与之交互。 Sikuli可以用来完成这项工作
答案 1 :(得分:0)
你可以试试这个:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
def get_logs2(driver):
# enable browser logging
#d = DesiredCapabilities.CHROME
#d['goog:loggingPrefs'] = { 'browser':'ALL' }
#driver = webdriver.Chrome(desired_capabilities=d)
# load the desired webpage
#driver.get('http://34.90.50.21/')
#driver.get(driver.current_url)
a = driver.get_log('browser')
# print messages
for entry in driver.get_log('browser'):
print(entry)
print("finished")
return a
或检查这个:Robot Frameworkget background call with Robot Framework/selenium