我想设置某个无形输入字段的值。
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
出错。
答案 0 :(得分:5)
当我遇到这个问题时,我只会使用eval
方法,让Javascript(或jQuery,如果它在页面中加载)负责选择和设置值。对我来说,它主要是选择下拉菜单,页面上的Angular应用程序需要更改或点击事件。
$mech->eval( q{$(tr.edit td[data-attribute="name"] input).val('test')} );
如果没有jQuery,我相信你的Google富会帮助你。
答案 1 :(得分:3)
您可以使用下面的内容
$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