о ужасный JavaScript

Castaneda

Client
Регистрация
24.05.2019
Сообщения
872
Благодарностей
299
Баллы
63
Не понимаю как реализована работа с JS в зенке.
Через консоль в хроме вызываю функцию - все работает.
Через кубик - ошибка. Видимо потому, что он не знает о подключенных JS на сайте в инстансе.
Так как их вызвать?

и, соответственно, вопрос к разработчикам почему это так реализовано? ( в смысле логично же код их кубика JavaScript "вставлять" в консоль, выполнить и получить результат в переменную.

п.с. "на текущей странице" поставил
 
Последнее редактирование:

Castaneda

Client
Регистрация
24.05.2019
Сообщения
872
Благодарностей
299
Баллы
63
так нельзя ж выкладывать в паблик. Убьют сайт в хламину.

ну вот например:
const username= await xxx.getUsername();

вызов функции, которая не описана в кубике, но она есть в JS'ах, которые подключены на текущей странице.
Через консоль отлично все срабатывает и console.log показывает правильный результат что в константе.

в это время кубик выдает: Выполнение действия JavaScript OwnCode EvaluateScriptAsync: Uncaught SyntaxError: await is only valid in async function

получается он не знает об этой функции и не может её вызвать.
Синтаксис правильный, скрипт правильный, но в кубике шиш.

Как его запустить?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
не смущает это -> await is only valid in async function ?
тут написано что await только для асинхронных функций.
где у нас в зенке асинхронные функции ? правильно, их нет даже в c# . ну есть конечно, но не из коробки.
поэтому пробуй return xxx.getUsername(); может и получится
 
  • Спасибо
Реакции: Castaneda

Castaneda

Client
Регистрация
24.05.2019
Сообщения
872
Благодарностей
299
Баллы
63
не смущает это -> await is only valid in async function ?
тут написано что await только для асинхронных функций.
где у нас в зенке асинхронные функции ? правильно, их нет даже в c# . ну есть конечно, но не из коробки.
поэтому пробуй return xxx.getUsername(); может и получится
Ну да они есть в скрипте.
А нет способов работать в консоли?
 

rastvl

Client
Команда форума
Регистрация
16.01.2019
Сообщения
656
Благодарностей
1 061
Баллы
93
С асинхронностью ничего не поделаешь, хотя в твоём случае может и есть вариантик...
Попробуй, например, сначала присвоить результат функции своей переменной:
Код:
 window.myVar = xxx.getUsername();
А затем через секунду-другую(ну или сколько там эта функция выполняется) достать ответ из своей переменной:
Код:
return window.myVar
где у нас в зенке асинхронные функции ?
Смешно на самом деле, что софт для автоматизации веба не может нормально с JS работать
 

Castaneda

Client
Регистрация
24.05.2019
Сообщения
872
Благодарностей
299
Баллы
63
С асинхронностью ничего не поделаешь, хотя в твоём случае может и есть вариантик...
Попробуй, например, сначала присвоить результат функции своей переменной:
Код:
 window.myVar = xxx.getUsername();
А затем через секунду-другую(ну или сколько там эта функция выполняется) достать ответ из своей переменной:
Код:
return window.myVar
Смешно на самом деле, что софт для автоматизации веба не может нормально с JS работать
Что ему может не нравиться?
Выполнение действия JavaScript OwnCode EvaluateScriptAsync: Unsupported return type.
В консоли return нормально отрабатывает:
Promise {<fulfilled>: "myusername"}

update:
и в консоль.лог возвращает нормально. А как мне его в зенку вытащить, если ей тип не нравится?
 
Последнее редактирование:

rastvl

Client
Команда форума
Регистрация
16.01.2019
Сообщения
656
Благодарностей
1 061
Баллы
93
Что ему может не нравиться?
Объект промиса потому что приходит, не поддерживается такое.
Я не знаю что за сайт и что там за функция, поэтому ничего не могу конкретного сказать
Промис еще вернёт, допустим, navigator.permissions.query
Принцип такой тогда:
Код:
navigator.permissions.query({name:"geolocation"})
    .then(res => {
    window.myVar = res.state;
})
Затем опять же через какое-то время нужно достать из myVar:
Код:
return window.myVar
В твоём случае тогда
Код:
xxx.getUsername().then(res => {
    window.myVar = res.полеобъекта
})
 
Последнее редактирование:
  • Спасибо
Реакции: Castaneda

rastvl

Client
Команда форума
Регистрация
16.01.2019
Сообщения
656
Благодарностей
1 061
Баллы
93
  • Спасибо
Реакции: Castaneda

Castaneda

Client
Регистрация
24.05.2019
Сообщения
872
Благодарностей
299
Баллы
63
Объект промиса потому что приходит, не поддерживается такое.
Я не знаю что за сайт и что там за функция, поэтому ничего не могу конкретного сказать
Промис еще вернёт, допустим, navigator.permissions.query
Принцип такой тогда:
Код:
navigator.permissions.query({name:"geolocation"})
    .then(res => {
    window.myVar = res.state;
})
Затем опять же через какое-то время нужно достать из myVar:
Код:
return window.myVar
В твоём случае тогда
Код:
xxx.getUsername().then(res => {
    window.myVar = res.полеобъекта
})
78994

в полеобъекта я так понял нужно вписать PromiseResult

т.к. в консоли у меня вот так выдавало
Promise {<fulfilled>: "myaccount"}
__proto__: Promise
[[PromiseState]]: "fulfilled"
[[PromiseResult]]: "myaccount"

но не прокатило(
 

rastvl

Client
Команда форума
Регистрация
16.01.2019
Сообщения
656
Благодарностей
1 061
Баллы
93
в полеобъекта я так понял нужно вписать PromiseResult
Нет
Ты либо читай про промисы и пойми, как оно работает,
либо пойми почему я в предыдущем сообщении написал window.myVar = res.state;,
либо скидывай сайт, потому что вот так гадать(что там нужно вернуть конкретно в твоём случае) и время тратить можно очень долго
 
  • Спасибо
Реакции: lbvf65 и Castaneda

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)