t.me/atinfo_chat Telegram группа по автоматизации тестирования

Ошибка при выполнении JavaScriptExecutor в IEDriverServer

windows
internet-explorer
javascript
Теги: #<Tag:0x00007f21d30e2b98> #<Tag:0x00007f21d30e2a58> #<Tag:0x00007f21d30e2918>

(Vladislav Abramov) #1

11 IE, 3.141.59.0 IEDriverServer 32-битный

хочу просто выполнить скрипт на странице, вылетает с ошибкой
image

я правильно понял, что у меня вообще нет никакой возможности выполнять скрипты в IE?

ну и еще вопрос:
можно как-то обойти необходимость настройки зон безопасности каждый раз?


(Alexandr D.) #2

Выполнять скрипты в IE можно, но с нюансами.

Какой скрипт вы выполняете?


(Vladislav Abramov) #3
Секретный скрипт
        public static void ReloadFrontEnd(string login)
        {
            string certsPath = ProjectEnvironment.ClientCerts;

            ((IJavaScriptExecutor)BaseSteps.Browser).ExecuteScript($"window['__stubHost'] = 'http://localhost:9999';" +
                $"window['__cert'] = '{certsPath}/{login}/{login}.client.cer';" +
                $"window['__privkey'] = '{certsPath}/{login}/{login}.privkey.pem.decoded.pem';" +
                "window['__q'] = angular.element(document.body).injector().get('$q');" +
                "window['__http'] = angular.element(document.body).injector().get('$http');" +
                "window['__tokenPlugin'] = angular.element(document.body).injector().get('app.security.TokenPluginDispatcherService');" +
                "__tokenPlugin.initialize = () => { console.log('initialize'); return __q.resolve(); };" +
                "__tokenPlugin.isActualVersion = () => { console.log('isActualVersion'); return __q.resolve(); };" +
                "__tokenPlugin.findInstalledTokens = (algorithm, serials) => { console.log('findInstalledTokens'); return __q.resolve([{ id: 1, hashAlgorithm: 4, serialNumber: serials[0]}]); };" +
                "__tokenPlugin.findCertificateBySerial = (token, serial) => { console.log('findCertificateBySerial'); return __q.resolve({ id: 1, token: token, serialNumber: serial }); };" +
                "__tokenPlugin.authenticate = (token, pin) => { console.log('authenticate'); return __q.resolve(); };" +
                "__tokenPlugin.disconnect = (token) => { console.log('disconnect'); return __q.resolve(); };" +
                "__tokenPlugin.signString = (certificate, string) => {" +
                "    console.log('signString');" +
                "    return __http({" +
                "        url: __stubHost," +
                "        method: 'GET'," +
                "        params: {" +
                "            cert: __cert," +
                "            privkey: __privkey," +
                "            sign_type: 'auth'," +
                "            value: string" +
                "        }" +
                "    })" +
                "    .then((result) => { console.log(result); return result.data; })" +
                "};" +
                "__tokenPlugin.signHash = (certificate, hash) => {" +
                "    console.log('signHash'); " +
                "    return __http({" +
                "        url: __stubHost," +
                "        method: 'GET'," +
                "        params: {" +
                "            cert: __cert," +
                "            privkey: __privkey," +
                "            sign_type: 'hash'," +
                "            value: hash" +
                "        }" +
                "    })" +
                "    .then((result) => { console.log(result); return result.data; })" +
                "}");
        }

(Alexandr D.) #4

Скорее всего ошибка в том, что в IE 11 нельзя использовать многие (если не все) фичи из ES6.
Смотрите в эту сторону.