Вам нужно вызвать selenium.getEval (). Сигнатура этого вызова заключается в том, что он принимает строковый аргумент, который представляет собой JavaScript, который будет выполнен в браузере, и возвращает строку, которая является строковым представлением возвращенные результаты.
Последняя часть - строковое представление - важна. Хотя вы, конечно, не можете сделать это в вашем скрипте BrowserMob:
var elements = window.document.getElementsByName("name");
Вы также не можете сделать это:
var elements = selenium.getEval('return window.document.getElementsByName("name")');
Хотя второй пример ближе к тому, что вам нужно сделать, он не совсем сработает, потому что getElementsByName возвращает массив объектов DOM, которые преобразуются в строку. Вместо этого вам, скорее всего, нужно решить , что вы хотите сделать с этими элементами, и создать большой фрагмент JS для eval, который будет возвращать именно то, что вы хотите.
Например, это вернет атрибут href второй ссылки на странице:
var secondHref = selenium.getEval('return window.document.getElementsByName("a")[1].href');
Надеюсь, это поможет. Главное, что вам нужно понять, это то, что хотя скрипты BrowserMob могут быть написаны на JavaScript, эта среда JavaScript, в которой он работает, в браузере , а не . Чтобы оценить произвольный JavaScript в браузере, вы должны пройти через getEval (), создав тем самым ситуацию JavaScript-in-JavaScript, которая может немного запутать.