Phantomjs uploadFile在一个iframe中
问题描述:
我试图上传一个图像,在iframe中的一种形式。我尝试先切换到框架,然后调用uploadFile。交换机工作但上传不起作用。我认为上传文件在主页面的环境上得到了评估,所以选择器失败了,有没有办法在iframe中指定输入?Phantomjs uploadFile在一个iframe中
browser.page.switchToFrame("iframeName");
// console.log(browser.page.frameContent);
browser.page.evaluate(function(capt) {
console.log("test");
var elementIter = document.evaluate("//input[@name='photo_upload']", document, null, XPathResult.ANY_TYPE, null); // fix to go more than 1 level down
if(item = elementIter.iterateNext())
{
console.log("id is "+item.id)
}
},' ');
browser.page.uploadFile('input[id=userfile_input]', '/home/ubuntu/new_bot/profile.jpg');
测试thingie,只是看看js是否在正确的环境中得到评估,它的工作原理。
答
解决了,显然使用帧名称的switchToFrame在使用phantomjs的内置方法时不起作用。当我使用switchToFrame的位置它的工作。
browser.page.switchToFrame(0);
browser.page.uploadFile('input[name=photo_upload]', '/home/ubuntu/new_bot/profile.jpg');