目标:获取chromium命令执行的结果,例如Profiler报告数据
我所做的:我可以使用browser.driver.sendChromiumCommand
调用chrome devtools命令。
例如,await browser.driver.sendChromiumCommand('Page.reload', {})
重新加载页面,所以我可以确认这是有效的。
问题:任何命令执行的结果总是null
这是我的代码
describe('Protractor Demo App', function() {
it('whatever', async function() {
await browser.get('http://juliemr.github.io/protractor-demo/');
const data = await browser.driver.sendChromiumCommand('Page.reload', {
scriptToEvaluateOnLoad: `(function(){return '123 })()`
});
console.log(data); // expected '123' but got 'null'
});
});
注意:问题与特定命令无关,所有devtools命令都返回null
这本身不是一个Protractor问题。
问题是Node.js的底层selenium-webdriver
使用了send_command
(不返回结果(,但没有实现send_command_and_get_result
的使用。
根据开发人员的回应,它将在下一个alpha版本中修复(目前的版本是4.0.0-alpha.7
(
我想,为了实现这一点,一旦selenium-webdriver
修复可用,Protractor的sendChromiumCommand
必须得到一个sendChromiumCommandAndGetResult
对应物。