사이트에서 다운로드 링크를 얻어야합니다. 클릭하면 사용할 수있을 때까지 10 초 정도 기다려야합니다. WebBrowser()와 함께 다운로드 링크를 얻을 수 있습니까?WebBrowser help - URL로 이동하고 잠시 기다린 다음 버튼을 클릭하십시오.
이것은 버튼의 소스입니다.
WebBrowser wb = new WebBrowser();
wb.ScriptErrorsSuppressed = true;
wb.AllowNavigation = true;
wb.Navigate(url);
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
while (wb.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
Thread.Sleep(10000);
HtmlElement element = wb.Document.GetElementById("btn_download");
element.InvokeMember("submit");
while (wb.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
string x = wb.Url.ToString();
여기에 잘못된 것입니다 :
<input type="submit" id="btn_download" class="btn btn-primary txt-bold" value="Download File">
이 내가 시도 무엇인가?
편집 됨 - BTW 내가 작은 내가
public void WebBrowser()
{
WebBrowser wb = new WebBrowser();
wb.ScriptErrorsSuppressed = true;
wb.AllowNavigation = true;
wb.Navigate(URL);
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
while (wb.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();
wb.Dispose();
}
public void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser wb = (WebBrowser)sender;
string x = wb.Url.ToString();
if (!x.Contains("server")) // download link must conatin server
{
System.Timers.Timer t = new System.Timers.Timer();
t.Interval = 10000;
t.AutoReset = true;
t.Elapsed += new ElapsedEventHandler(TimerElapsed);
t.Start();
HtmlElement element = wb.Document.GetElementById("btn_download");
element.InvokeMember("Click");
while (wb.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();
}
else
MessageBox.Show(x);
}
public void TimerElapsed(object sender, ElapsedEventArgs e)
{
Application.DoEvents();
}
정확히 무엇이 작동하지 않는지 우리에게 말하지 않을 때, 무엇이 잘못 됐는지를 말하기는 어렵습니다. 하지만 먼저 InvokeMember ("Click")을 사용해야한다고 생각합니다. InvokeMember ("submit") 대신. 두 번째로 클릭 후 URL을 읽으려고합니다. 하지만 브라우저를 호출하면 새 탐색이 시작됩니다. 따라서 DocumentCompleted-Handler의 시작 부분에서 실제 URL을 찾아 대기 사이트인지 다운로드 사이트인지 확인해야합니다. 기다리고 있으면 호출하십시오. 다운로드 한 다음 문자열 x = wb.Url.ToString(); – netblognet
UI 스레드 ('Thread.Sleep (10000);')를 차단하고 있습니다. 그 기간 동안 웹 브라우저는 아무 것도 할 수 없습니다. –
차단을 피하기 위해 타이머를 사용할 수 있습니다. 이것 좀 봐 : http://stackoverflow.com/questions/8496275/c-sharp-wait-for-a-while-without-blocking – netblognet