使用 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;
    }