使用 BrowserStack 上传 Selenium 文件 iOS 或 Android
Selenium File Upload iOS or Android using BrowserStack
是否可以在移动浏览器(iOS 上的 Safari、Android 上的 Chrome 上上传文件?常规方法似乎不起作用。也许有与 BrowserStack 类似的选项,文件上传实际上可以工作?
BrowserStack 使用 Appium 在 Android 和 iOS 上驱动您的 Selenium 测试。
如前所述here,由于 Appium 目前不支持上传,BrowserStack 也无法支持移动设备上的文件上传。
这是一个使用 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;
}
是否可以在移动浏览器(iOS 上的 Safari、Android 上的 Chrome 上上传文件?常规方法似乎不起作用。也许有与 BrowserStack 类似的选项,文件上传实际上可以工作?
BrowserStack 使用 Appium 在 Android 和 iOS 上驱动您的 Selenium 测试。
如前所述here,由于 Appium 目前不支持上传,BrowserStack 也无法支持移动设备上的文件上传。
这是一个使用 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;
}