Chromedriver:由于页面崩溃而删除了会话

时间:2018-05-02 10:03:46

标签: javascript google-chrome protractor selenium-chromedriver ng-file-upload

我正在使用量角器 jasmine 为我的AngularJS应用程序编写测试。

我正在使用以下代码测试文件上传案例:

const fileElem = element(by.css('input[type="file"]'));

fileElem.sendKeys(absoluteFilePath);

browser.sleep(500);

本地工作与下一个包:

"chromedriver": "2.38.2", "protractor": "5.3.1", Chrome - v.66.0.3359.139

但是当我在GitLab CI上运行此测试时,我收到一个错误:

  

[chrome#01]F✗应该上传文件

     

[chrome#01] - 失败:未知错误:会话被删除因为   页面崩溃

     来自未知错误的

[chrome#01]:无法确定加载状态

     标签崩溃

[chrome#01]

     

[chrome#01](会话信息:无头铬= 65.0.3325.181)

     

[chrome#01](驱动信息:chromedriver = 2.38.552522   (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),平台= Linux的   4.13.5-coreos-r2 x86_64)

我正在使用 ng-file-upload 指令。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

我在vps上运行硒时遇到了同样的问题。 5小时后,我发现太多未完成的过程尝试使用驱动程序。尝试把他们全部杀死

pkill -f chrome*

答案 1 :(得分:0)

sendKeys按字符串输入字符串char,模型将在输入每个字符时检测更改。因此,如果文件路径有10个字符,模型将检测10次更改。每次模型更改都会触发文件上传。但前9次的文件路径不正确,因此频繁的文件上传导致浏览器崩溃。

const fileElem = element(by.css('input[type="file"]'));

// input file path by javascript in silent to avoid multiple model change
browser.executeScript(
   'arguments[0].value=arguments[1];',
   fileElem.getWebElement(),
   absoluteFilePath 
);

// input a blank space at the end of file path 
// to let model detect change, then trigger file uploading.
fileElem.sendKeys(" ");