如何在chrome devtools命令行中交互执行selenium webdriver/量角器命令?
如何:如何在chrome devtools命令行中交互执行selenium webdriver/量角器命令?,selenium,selenium-webdriver,protractor,google-chrome-devtools,Selenium,Selenium Webdriver,Protractor,Google Chrome Devtools,如何: 编写未完成的测试 在未完成的测试结束时设置断点 输入repl/命令行/chrome devtools 在repl/command-line/chrome devtools中执行selenium命令 能够设置开发环境,我可以在chrome开发工具中执行selenium操作(以交互方式) 1.使用中间的调试器断点编写示例测试 const faker = require('faker') describe('login', function() { this.timeout(30 *
- 编写未完成的测试
- 在未完成的测试结束时设置断点
- 输入repl/命令行/chrome devtools
- 在repl/command-line/chrome devtools中执行selenium命令
const faker = require('faker')
describe('login', function() {
this.timeout(30 * 1000)
describe("when user doesn't exist", () => {
it.only('should not login', async () => {
await browser.get(`/login`)
// debugger breakpoints
// I'm using `await $('div').getText();` command to force selenium evaluate promise.
// More about how promises are evaluated in chrome devtools here
// https://stackoverflow.com/questions/53852917/how-to-run-asynchronous-code-in-chrome-devtools-when-script-execution-is-paused
// use F8 in chrome devtools to execute `await $('div').getText();` and stop on next `debugger` breakpoint
// use ctrl-[ and ctrl-] to switch between panels in chrome devtools
debugger; await $('div').getText();debugger; await $('div').getText();debugger; await $('div').getText();debugger; await $('div').getText();debugger; await $('div').getText();debugger; await $('div').getText();debugger; await $('div').getText();debugger; await $('div').getText();debugger; await $('div').getText();debugger; await $('div').getText();debugger; await $('div').getText();debugger; await $('div').getText();debugger; await $('div').getText();
await $('#gb-email').sendKeys('foo@mail.com')
})
})
})
“测试:调试”:“节点--检查brk=0.0.0.0:9229./node_modules/.bin/dragrator./config.js”,
await$('div').getText()
将强制selenium执行语句(selenium承诺是奇怪的承诺类型,例如,甚至await(新承诺((resolve)=>{setTimeout(()=>{resolve('dummy');},0);}))
不强制selenium执行语句`)奖金 config.js
exports.config = {
framework: "mocha",
baseUrl: process.env.APP_URL,
seleniumAddress: process.env.HUB_URL,
specs: ["src/specs/**/*.js"],
capabilities: {
browserName: "chrome",
// https://stackoverflow.com/questions/32740900/webdriverio-selenium-pass-command-line-arguments-into-chrome-from-config-js-file
chromeOptions: {
args: [
// disable chrome's wakiness
'disable-infobars',
'disable-extensions',
// allow http
'disable-web-security',
// other
'lang=en',
'no-default-browser-check',
'no-sandbox',
// not working
// 'start-maximized',
],
prefs: {
// disable chrome's annoying password manager
'profile.password_manager_enabled': false,
'credentials_enable_service': false,
'password_manager_enabled': false,
download: {
default_directory: process.env.REMOTE_DOWNLOAD_DIR,
prompt_for_download: false,
directory_upgrade: true,
extensions_to_open: '',
},
plugins: {
plugins_disabled: ['Chrome PDF Viewer'], // disable viewing pdf files after download
},
},
},
},
onPrepare: function () {
browser.ignoreSynchronization = true
// because --start-maximized arg is not working
browser.driver.manage().window().maximize()
// patch require function to run babel before loading files
require("@babel/register")
// fix regeneratorRuntime is not defined
// require("@babel/polyfill")
},
mochaOpts: {
enableTimeouts: false,
file: ['./src/hooks/index.js'],
},
allScriptsTimout: 15000,
}
注意:此处重复