提问人:irrational 提问时间:10/18/2017 更新时间:6/16/2022 访问量:7648
在 Node.js 上使用 Selenium Webdriver Chrome 的阅读控制台
Reading Console using Selenium Webdriver Chrome on Node.js
问:
我想在 Node.js 中使用 Selenium Webdriver Chrome 转到网页,填写输入,单击按钮,然后检索浏览器控制台的内容。我能够获取网页,填写输入,然后单击按钮,但到目前为止,我无法弄清楚如何检索控制台的内容。我该怎么做?
这是我目前拥有的代码:
const webdriver = require('selenium-webdriver');
const chromeDriver = require('selenium-webdriver/chrome');
const path = require('chromeDriver').path;
const service = new chromeDriver.ServiceBuilder(path).build();
chromeDriver.setDefaultService(service);
const { By, until } = webdriver;
webdriver.promise.USE_PROMISE_MANAGER = false;
const CHROME_BIN_PATH = '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome';
const options = new chromeDriver.Options();
options.setChromeBinaryPath(CHROME_BIN_PATH);
options.addArguments(
'headless',
'disable-gpu',
);
const main = async () => {
try{
const driver = await new webdriver.Builder()
.withCapabilities(webdriver.Capabilities.chrome())
.forBrowser('chrome')
.setChromeOptions(options)
.build();
await driver.get('http://example.com/some/path.html');
await driver.findElement(By.name('name2')).sendKeys('webdriver');
await driver.findElement(By.name('button2')).click();
const title = await driver.findElement(By.css('title')).getAttribute('innerHTML');
console.log({ title });
const log = GET THE BROWSER'S CONSOLE LOG
console.log(log);
await driver.quit();
} catch (error) {
console.log(error);
}
};
main();
答:
8赞
Lucas Tierney
10/18/2017
#1
根据文档:
driver.manage().logs().get(logging.Type.BROWSER)
.then(function(entries) {
entries.forEach(function(entry) {
console.log('[%s] %s', entry.level.name, entry.message);
});
});
评论
0赞
irrational
10/18/2017
谢谢你的链接!我花了一下午的时间阅读文档,但从未找到该页面。我现在意识到,当我查看日志记录→ selenium-webdriver/lib/logging 时(在第 seleniumhq.github.io/selenium/docs/api/javascript/module/ 页上......我假设日志记录和 selenium-webdriver/lib/logging 链接都去了同一个地方(它们没有),我只点击了日志记录链接。无论如何,这正是我一直在寻找的文档!
0赞
JRichardsz
7/15/2021
是否可以获取自定义片段的日志?在获得我的和空条目后,我尝试了您的第一个片段。谢谢driver.get("localhost:8080#htmlElementAction")
0赞
user3632055
6/16/2022
#2
对于无法让日志工作的每个人,以下是对我有用的方法:
this.driver = await new Builder()
.forBrowser('chrome')
.setChromeOptions(chromeOptions)
.setCapability('goog:loggingPrefs', { 'browser':'ALL' })
.build();
然后,在执行脚本后,您要从 run 获取日志:
this.driver.manage().logs().get(logging.Type.BROWSER).then(function(text) {
console.log('--CHROME LOGS--', text);
});
评论