【发布时间】:2016-06-20 18:44:51
【问题描述】:
是否可以在移动浏览器上上传文件(iOS 上的 Safari,Android 上的 Chrome)?常规方法似乎不起作用。也许有与 BrowserStack 类似的选项,文件上传实际上可以工作?
【问题讨论】:
标签: android ios file upload selenium-ide
是否可以在移动浏览器上上传文件(iOS 上的 Safari,Android 上的 Chrome)?常规方法似乎不起作用。也许有与 BrowserStack 类似的选项,文件上传实际上可以工作?
【问题讨论】:
标签: android ios file upload selenium-ide
这是一个使用 base64 和 JS 的 hacky 文件上传解决方案,但它确实有效,所以嘿,我希望你觉得这很有用:
public CorePage UploadHack(string fileInputId, string contentType, string fileContent, string fileName, string angularScopeVar)
{
UploadFile(_filePath);
var uploadHack =
"(function(){" +
"function convert(base64){" +
"var raw = atob(base64);" +
"var arr = new Uint8Array(new ArrayBuffer(raw.length));" +
"for (var i = 0; i < raw.length; i++){" +
"arr[i] = raw.charCodeAt(i);" +
"}" +
"return arr; " +
"}" +
$"var file = new Blob([convert('{fileContent}')], {{'type':'{contentType}'}}); " +
$"file.name = '{fileName}'; " +
$"angular.element('#{fileInputId}').scope().{angularScopeVar} = file;" +
"})()";
Driver.ExecuteJavaScript(uploadHack);
return this;
}
【讨论】:
BrowserStack 使用 Appium 在 Android 和 iOS 上驱动您的 Selenium 测试。
鉴于here,由于 Appium 目前不支持上传,BrowserStack 也无法支持移动设备上的文件上传。
【讨论】: