protractor - 量角器无法使用 webdriver-manager 在 Chome 中执行测试用例
问题描述
Protractor 无法使用 webdriver-manager 在 chrome 浏览器中启动测试用例。
我按照这里给出的说明https://www.protractortest.org/#/ 并遇到了以下错误。
debarnab@debarnab-Aspire-A515-51G:~/ProtractorConnectionTesting$ protractor conf.js
[19:33:57] I/launcher - Running 1 instances of WebDriver
[19:33:57] I/hosted - Using the selenium server at http://localhost:4444/wd/hub
[19:33:57] E/launcher - unknown error: Chrome failed to start: exited abnormally
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
(Driver info: chromedriver=2.46.628388 (4a34a70827ac54148e092aafb70504c4ea7ae926),platform=Linux 4.15.0-45-generic x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 59 milliseconds
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'debarnab-Aspire-A515-51G', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.15.0-45-generic', java.version: '1.8.0_201'
Driver info: driver.version: unknown
[19:33:57] E/launcher - WebDriverError: unknown error: Chrome failed to start: exited abnormally
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
(Driver info: chromedriver=2.46.628388 (4a34a70827ac54148e092aafb70504c4ea7ae926),platform=Linux 4.15.0-45-generic x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 59 milliseconds
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'debarnab-Aspire-A515-51G', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.15.0-45-generic', java.version: '1.8.0_201'
Driver info: driver.version: unknown
at Object.checkLegacyResponse (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:546:15)
at parseHttpResponse (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/http.js:509:13)
at doSend.then.response (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/http.js:441:30)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
From: Task: WebDriver.createSession()
at Function.createSession (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:769:24)
at Function.createSession (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/chrome.js:761:15)
at createDriver (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/index.js:170:33)
at Builder.build (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/index.js:626:16)
at Hosted.getNewDriver (/usr/local/lib/node_modules/protractor/built/driverProviders/driverProvider.js:53:33)
at Runner.createBrowser (/usr/local/lib/node_modules/protractor/built/runner.js:195:43)
at q.then.then (/usr/local/lib/node_modules/protractor/built/runner.js:339:29)
at _fulfilled (/usr/local/lib/node_modules/protractor/node_modules/q/q.js:834:54)
at self.promiseDispatch.done (/usr/local/lib/node_modules/protractor/node_modules/q/q.js:863:30)
at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/protractor/node_modules/q/q.js:796:13)
[19:33:57] E/launcher - Process exited with error code 199
conf.ts 文件
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['todo-spec.js']
};
规格文件
describe('angularjs homepage todo list', function() {
it('should add a todo', function() {
browser.get('https://angularjs.org');
element(by.model('todoList.todoText')).sendKeys('write first protractor test');
element(by.css('[value="add"]')).click();
var todoList = element.all(by.repeater('todo in todoList.todos'));
expect(todoList.count()).toEqual(3);
expect(todoList.get(2).getText()).toEqual('write first protractor test');
// You wrote your first test, cross it off the list
todoList.get(2).element(by.css('input')).click();
var completedAmount = element.all(by.css('.done-true'));
expect(completedAmount.count()).toEqual(2);
});
});
我正在使用 Ubutu 机器并尝试运行基本场景。如前所述,Selenium Server 似乎已在http://localhost:4444/中启动并运行。有人可以建议吗?
解决方案
从这个答案看来,您可以--disable-dev-shm-usage
在 Linux 机器上运行时添加以解决此问题。
conf.js
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['todo-spec.js'],
capabilities: [
{
browserName: 'chrome',
chromeOptions: { args: ["--disable-dev-shm-usage"] },
},
};
你能试试这个,让我知道它是否有效吗?谢谢
推荐阅读
- javascript - react-day-picker disabledDays 点击仍然触发 onDayClick
- oracle - PL/SQL 过程块中的 DELETE FROM
- jquery - 使用带有布尔状态标志和持续时间的 toggle()
- reactjs - 在反应中单击组件时如何创建相同类型的组件?
- android - ffmpeg:Android 上的某些播放器对视频持续时间感到困惑
- python - Python中使用前向和后向替换函数的Cholesky分解
- python-3.x - 根据子字符串分组行并分配列值
- snmp - 使用 OBJECT-TYPE 定义对象并在 2 个不同的应用程序中使用
- python - SPARQL 查询查找三元组的行号
- r - 在 RShiny 中的 fluidRow() 中绘制 3 个小方块,就像一个图例