代码接收中的文件上传错误?

File uploading error in codeception?

我正在尝试将文件上传到几个输入元素。这些输入的 id 属性总是随机生成的,所以我从我的辅助函数收到了 RemoteWebElements 列表:

function getInputFields() {
    $inputs = $this->getModule('WebDriver')->_findElements(['xpath' => "//input[@type='file']"]);
    return $inputs;
 }

然后,在 Cept 中,我尝试上传文件,将 ID 插入 XPath 字符串

$pass = $I->getInputFields();
$path_to_input1 = "//*[@id='" . $pass[0]->getAttribute('id') ."']";
$I->attachFile($path_to_input1, '1.jpg');

我很确定输入元素存在,而且我正确地得到了它的 ID,通过调试输出检查。 得到这个:

[ERROR - 2015-08-28T11:15:35.801Z] RouterReqHand - _handle.error - {"stack":"\tat _uploadFile ([native code])\n\tat \n\tat _postUploadFileCommand (:/ghostdriver/request_handlers/session_request_handler.js:212:30)\n\tat _handle (:/ghostdriver/request_handlers/session_request_handler.js:198:35)\n\tat _reroute (:/ghostdriver/request_handlers/request_handler.js:61:20)\n\tat _handle (:/ghostdriver/request_handlers/router_request_handler.js:78:46)","line":431,"sourceURL":""}

[Facebook\WebDriver\Exception\WebDriverException] JSON decoding of remote response failed.
Error code: 4
The response: 'Error - incompatible type of argument(s) in call to _uploadFile(); candidates were
_uploadFile(QString,QStringList)'

你能帮帮我吗,这里的陷阱在哪里?

因此,从 PhantomJS 切换到 Selenium 服务器可以修复该行为。

我在 github 上发现了这个问题,似乎会​​在下一版本的 PhantomJS 中修复:https://github.com/ariya/phantomjs/issues/12506