我需要在C#中使用Selenium将文件下载到byte []。
问题是文件是通过一个按下javascript调用的按钮下载的:
javascript:__doPostBack('ctl00$MainContent$gvOutputs','Select$0')
如果我能获得一个URL,我可以使用C#命令:
using (WebClient wc = new WebClient())
{
wc.Headers[HttpRequestHeader.Cookie] = this.GetCookieHeaderString(); //Get Cookie from Selenium window
return wc.DownloadData(sourceURL);
}
不幸的是,由于我没有URL,因此无法正常工作。
<_> __dopostback发出如下所示的POST请求:__EVENTTARGET=ctl00%24MainContent%24gvOutputs
__EVENTARGUMENT=Select%240
__VIEWSTATE=sEM2tcQczKVsK5kzEN2x19Gxco%....
__VIEWSTATEGENERATOR=B935C9B7
__VIEWSTATEENCRYPTED=
__EVENTVALIDATION=kOyxw5ZKBd1yygTXmUR%....
我想如果有办法获取这些变量,我可以在C#中创建一个POST。但是我不确定如何获得这些变量?
我可以点击selenium中的链接,但这会强制下载到客户端计算机..
我想1个选项是监视下载目录,并以这种方式读取它,但我试图避免这种强力方法。
答案 0 :(得分:0)
我希望有更好的答案。但是我最终为每个Selenium实例创建了一个特定的DOWNLOAD路径,然后监视该目录并将文件与selenium实例相关联。有点hacky但是它有效。