【问题标题】:Selenium File Upload iOS or Android using BrowserStackSelenium 文件上传 iOS 或 Android 使用 BrowserStack
【发布时间】:2016-06-20 18:44:51
【问题描述】:

是否可以在移动浏览器上上传文件(iOS 上的 Safari,Android 上的 Chrome)?常规方法似乎不起作用。也许有与 BrowserStack 类似的选项,文件上传实际上可以工作?

【问题讨论】:

    标签: android ios file upload selenium-ide


    【解决方案1】:

    这是一个使用 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;
        }
    

    【讨论】:

    • UploadFile 这里基本上是 UploadElement.SendKeys("path to file") :) 视情况而定,在您的情况下可能完全没有必要
    【解决方案2】:

    BrowserStack 使用 Appium 在 Android 和 iOS 上驱动您的 Selenium 测试。

    鉴于here,由于 Appium 目前不支持上传,BrowserStack 也无法支持移动设备上的文件上传。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-08
      • 2021-05-24
      • 2019-10-13
      • 1970-01-01
      相关资源
      最近更新 更多