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

dax*_*xim 18 perl browser-automation

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

my $field = $w->selector('tr.edit td[data-attribute="name"] input', single => 1);
Run Code Online (Sandbox Code Playgroud)

找到它.

$field->attributes->{value} = 'test';
Run Code Online (Sandbox Code Playgroud)

没有明显的效果.

$w->field($field => 'test');
Run Code Online (Sandbox Code Playgroud)

$w->field('tr.edit td[data-attribute="name"] input' => 'test');
Run Code Online (Sandbox Code Playgroud)

出错了No elements found for form number 1.

sim*_*que 5

当我遇到这个问题时,我只会使用该eval方法,让Javascript(或jQuery,如果它在页面中加载)负责选择和设置值.对我来说,主要是选择下拉菜单,页面上的Angular应用程序需要更改单击事件.

$mech->eval( q{$(tr.edit td[data-attribute="name"] input).val('test')} );
Run Code Online (Sandbox Code Playgroud)

如果没有jQuery,我相信你的Google fu会帮助你.