如何通过复杂选择器设置输入字段的值?

时间:2018-03-19 13:51:37

标签: perl browser-automation

我想设置某个无形输入字段的值。

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出错。

2 个答案:

答案 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