Это имеет смысл, потому что elmnt.options
в последнем фрагменте - массив, заполненный значениями undefined
. Значит, вы знаете количество элементов, но не их ценности. Причина в том, что узлы DOM не могут быть переданы из контекста страницы. docs говорят:
Примечание. Аргументы и возвращаемое значение функции оценки должны быть простым примитивным объектом.
Замыкания, функции, узлы DOM и т. Д. Будут работать не !
g4] g3> / blockquote>Итак, либо вы делаете все внутри контекста страницы (
evaluate
), либо получаете представление узлов DOM, с которыми вы хотите работать. Я думаю, это не то, что вы хотите.var elmnt = this.evaluate(function () { return [].map.call(document.getElementsByName("symbol")[0].options, function(option){ return {text: option.innerText, value: option.value}; }); });