Как вы устанавливаете значение поля ввода с помощью сложного селектора?
Я хочу установить значение определенного бесформенного поля ввода.
my $field = $w->selector('tr.edit td[data-attribute="name"] input', single => 1);
находит это.
$field->attributes->{value} = 'test';
не имеет видимого эффекта.
И то и другое
$w->field($field => 'test');
а также
$w->field('tr.edit td[data-attribute="name"] input' => 'test');
ошибка No elements found for form number 1
.
Ответы
Ответ 1
Когда я столкнулся с этой проблемой, я просто использую метод eval
и позволяю Javascript (или jQuery, если он загружен на странице), заботиться о выборе и настройке значений. Для меня это было главным образом выбор выпадающих списков, где для приложения "Угловое" на странице требовалось изменение или событие клика.
$mech->eval( q{$(tr.edit td[data-attribute="name"] input).val('test')} );
Если jQuery нет, я уверен, что ваш Google fu поможет вам.
Ответ 2
Возможно, вы можете использовать что-то вроде ниже
$w->driver->send_message('DOM.setAttributeValue', nodeId => 0+$field->nodeId, name => 'value', value => "test" )->get
Ссылка на исходный код
https://metacpan.org/source/CORION/WWW-Mechanize-Chrome-0.10/lib/WWW/Mechanize/Chrome.pm#L3137