使用Selenium C#将文件下载到Byte []

时间:2017-11-24 11:03:45

标签: c# selenium

我需要在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个选项是监视下载目录,并以这种方式读取它,但我试图避免这种强力方法。

1 个答案:

答案 0 :(得分:0)

我希望有更好的答案。但是我最终为每个Selenium实例创建了一个特定的DOWNLOAD路径,然后监视该目录并将文件与selenium实例相关联。有点hacky但是它有效。