我正在尝试自动上传图片以将其设置为YouTube中的头像。到目前为止,我已将该程序登录到YouTube,转到“频道”页面,然后单击“编辑频道”按钮。
但是,我无法让文件上传过程正常工作。最初我使用了这段代码:
public FileUpload AvatarFileUpload
{
get
{
return Document.FileUpload(Find.ByName("image") && Find.ById("image-upload-file-input"));
}
}
AvatarFileUpload.Set(AvatarLocation);
这打开了文件上传对话框,并输入了需要上传的imaget的路径,但实际上并没有上传照片。
我已成功使用此代码将文件上传到其他网站,因此WatiN的FileUpload对象不存在问题。
这与YouTube有一个虚假按钮隐藏实际文件表单对象,然后使用jQuery或其他东西来完成整个过程有关。
在进行一些挖掘之后,我可以看出文件上传对象是以自己的形式,并且该表单的操作是页面中隐藏的iframe。
所以,我尝试使用此代码上传文件,提交该表单,然后提交主表单,但这也不起作用。
public FileUpload AvatarFileUpload
{
get
{
return Document.FileUpload(Find.ByName("image") && Find.ById("image-upload-file-input"));
}
}
public Form ImageUploadForm
{
get
{
return Document.Form(Find.ById("image-upload-form"));
}
}
public Form ChannelsPageEditorForm
{
get
{
return Document.Form(Find.ById("channels-page-editor-form"));
}
}
AvatarFileUpload.Set(AvatarLocation);
System.Threading.Thread.Sleep(5000);
ImageUploadForm.Submit();
System.Threading.Thread.Sleep(5000);
ChannelsPageEditorForm.Submit();
我无法弄清楚如何让实际的头像更新。有没有人对如何使这项工作有任何意见/建议?
谢谢!
P.S。我尝试使用WatiN记录器来查看他们推荐的内容,但他们的解决方案也不起作用:
public Div BrandingEditorDiv
{
get
{
return Document.Div(Find.ById("branding-editor-content"));
}
}
public FileUpload AvatarFileUpload
{
get
{
return Document.FileUpload(Find.ByName("image") && Find.ById("image-upload-file-input"));
}
}
BrandingEditorDiv.Click();
AvatarFileUpload.Set(AvatarLocation);