2011-11-26 2 views
-1

는 웹 페이지에 코드입니다 :웹 페이지의 C#에 포함 된 링크를 클릭하도록하는 방법은 다음과

<div id="dl_link" style="display: block;"> 
<a href="/get?video_id=KMU0tzLwhbE&h=3713fa1cb8c500381a1edaaf80a06ab5"> 
<b>Download</b> 

는하지만 C#에서 해당 링크의 클릭을 코딩하는 방법을 모르겠어요.

이것은 내가 지금까지 가지고있는 것입니다.

private void button1_Click(object sender, EventArgs e) 
{ 
    webBrowser1.Document.GetElementById("youtube-url").SetAttribute("value", textBox1.Text); // put text into textbox 
    webBrowser1.Document.GetElementById("submit").InvokeMember("onclick"); // click convert video button 
} 

private void button2_Click(object sender, EventArgs e) 
{ 
    HtmlElement downloadlink = webBrowser1.Document.GetElementById("href="); //wrong 
    downloadlink.InvokeMember("onclick"); //wrong 
} 

마지막 단계 수행 방법이 완전히 손실됩니다. 도와주세요.

+2

기본 URL에 HTTP가 전송되었습니다. – sll

+0

일종의 XY 문제입니까? http://www.perlmonks.org/?node_id=542341 –

+0

일단 클라이언트로 렌더링되면 서버 측 ASP.Net 코드 *는 링크를 클릭 할 수 없습니다. 성취하려는 것은 무엇입니까? – Amy

답변

1

귀하의 링크는 JS 코드가 붙어 있지 않은 일반 링크 일 뿐이므로 webBrowser1.Navigate(downloadlink.GetAttribute("href"));을 사용할 수 있습니다.

편집 :downloadlink 사용 webBrowser1.Document.GetElementById("dl_link").All[0]

+0

그것은 링크가 자바 스크립트에서 동적으로 첨부 된 이벤트 처리기를 가지고 있을지도 모른다.이 경우 페이지 소스에서 분명하지 않은 경우이 솔루션이 문제를 일으킬 수있다. HtmlElement.RaiseEvent()를 사용하는 것이 더 좋지만, 응답을 게시하고 싶지는 않습니다. o) –

+0

외부 스크립트에서 설정된 링크에'onclick' 핸들러가 있다면, InvokeMember ("클릭") 또는'RaiseEvent'는 효과가 있었지만 Andrew는 그렇게하지 않았다고 썼다. – MagnatLU

+0

좋은 지적. 어떤 경우에는 RaiseEvent()를 살펴 본 후에도 작동하지 않습니다. 자바 스크립트에서 정의 된 이벤트 핸들러 만 호출되므로 InvokeMember()와 매우 유사하므로 응답이 가장 좋습니다. –

0

당신은 지나치게 성능에 관심없는 경우가 WatiN를 사용하여 자동화 할 수 있습니다를 얻을 수 있습니다.

using (var browser = new IE("http://stackoverflow.com")){ 
    var link = browser.Divs.First(Find.ById("dl_link")).Links.First(); 
    link.Click(; 
} 
관련 문제