Я пытаюсь автоматизировать процесс загрузки изображения, чтобы установить его в качестве аватара на YouTube.Пока у меня есть программа, заходящая на YouTube, идущая на страницу канала и затем нажимающая кнопку «Редактировать канал».
Однако я не могу заставить процесс загрузки файла работать.Первоначально я использовал этот код:
public FileUpload AvatarFileUpload
{
get
{
return Document.FileUpload(Find.ByName("image") && Find.ById("image-upload-file-input"));
}
}
AvatarFileUpload.Set(AvatarLocation);
Это открывало диалоговое окно загрузки файла и вводило путь к изображению, которое нужно было загрузить, однако на самом деле не загружало фотографию.
Я успешно использовал этот код для загрузки файлов на другие веб-сайты, поэтому это не проблема для объекта FileUpload WatiN.
Это связано с тем, что на 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();
Я не могу понять, как получить актуальный аватар для обновления.У кого-нибудь есть какие-либо советы / предложения о том, как заставить это работать?
Спасибо!
PS Я пытался использовать рекордер 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);