这是网页的html部分
<div id="upload" class="panel">
<div style="width:720px" align="left">
<table border="0"><tr>
<td>
<div><input name="attachment[]" type="file"></div>
<div><input name="attachment[]" type="file"></div>
<div><input name="attachment[]" type="file"></div>
<div><input name="attachment[]" type="file"></div>
<div><input name="attachment[]" type="file"></div>
</td>
<td>
<div><input name="attachment[]" type="file"></div>
<div><input name="attachment[]" type="file"></div>
<div><input name="attachment[]" type="file"></div>
<div><input name="attachment[]" type="file"></div>
<div><input name="attachment[]" type="file"></div>
</td>
<td>
<div><input name="attachment[]" type="file"></div>
<div><input name="attachment[]" type="file"></div>
<div><input name="attachment[]" type="file"></div>
<div><input name="attachment[]" type="file"></div>
<div><input name="attachment[]" type="file"></div>
</td>
</tr></table>
</div>
我填充文件类型输入,如
page.uploadFile('input[type=file]', 'test2.png');
这总是填充第一个div输入附件文件类型。
如何更改此项以填充第一个/第二个...直到第十五个div元素文件类型?
答案 0 :(得分:0)
似乎page.uploadfile
只接受简单的类似CSS的选择器,但没有像nth-child
这样的额外修饰符,所以除非它们有自己的类或ID,否则无法定位所有输入。
但是......我们可以用page.evaluate
来操纵页面!让我们给他们独特的课程:
total_inputs = page.evaluate(function(){
// Assign different class names to all file inputs
var inputs = document.querySelectorAll('input[type=file]'), i;
for (i = 0; i < inputs.length; ++i) {
inputs[i].className = "file" + i;
}
// pass back to PhantomJS scope information about how many inputs there are
return inputs.length;
});
// Now upload those files!
for (q = 0; q < total_inputs; ++q) {
page.uploadFile('input[class=file' + q + ']', 'test2.png');
}
结果:
请注意,某些版本的PhantomJS无法上传文件。