WebBrowser content

  • Thread starter Finn Stampe Mikkelsen
  • Start date
F

Finn Stampe Mikkelsen

Hi.

I'm currently trying to automate some data retrieval from a website using a
form to select data, later the found data is displayed and can be exported
as a csv file.

I have successfully navigated through the pages so far, but i am stuck with
the page, that selects the export type. I can't get from here. Below is the
HTML. I have tried several ways, but i can't seem to extract the button or
link from the document. You can use this to navigate to the page yourself:

wB1.Navigate(new
System.Uri(@"http://frekvensregistret.itst.dk/Co...amp;FCity=&CuCity=&CuName=&CuAdd="));

Any suggestions on how i can simulate pressing the "fortsæt" (continue)
button on the page and maybe also, how i can save the csv file automatic to
disc

/Finn


HTML Code of webbrowser document:
===

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1"><title>
Frequency Registry - Export Option Page
</title><link href="../includes/css/_import.css" rel="stylesheet"
type="text/css" />
<script language="javascript" type="text/javascript">

function showHelpText(obj) {
var hlpObj = document.getElementById("divHlpTxt");
var frmObj = document.getElementById("frmHlpTxt");
var srcObj = document.getElementById("pTxt_" + obj.id);
var title = srcObj.getElementsByTagName("em")[0].innerHTML;
hlpObj.getElementsByTagName("em")[0].innerHTML = title.replace(/:/g,"");
hlpObj.getElementsByTagName("em")[1].innerHTML =
srcObj.getElementsByTagName("em")[1].innerHTML;
var coors = findPos(obj);

if ((coors[1] + hlpObj.offsetHeight) >
document.documentElement.clientHeight) {
hlpObj.style.top = ((coors[1] - hlpObj.offsetHeight) + 7) + "px";
} else {
hlpObj.style.top = (coors[1] + 7) + "px";
}

if ((coors[0] + hlpObj.offsetWidth) > document.documentElement.clientWidth)
{
hlpObj.style.left = ((coors[0] - hlpObj.offsetWidth) + 7) + "px";
} else {
hlpObj.style.left = (coors[0] + 7) + "px";
}

frmObj.style.left = hlpObj.style.left;
frmObj.style.top = hlpObj.style.top;
frmObj.style.height = hlpObj.offsetHeight;
frmObj.style.width = hlpObj.offsetWidth;
frmObj.style.display = "block";
}

function closeHlpTxt() {
document.getElementById("divHlpTxt").style.top = "-1000px";
document.getElementById("frmHlpTxt").style.top = "-1000px";
}
function findPos(obj) {
var curleft = curtop = 0;
if (obj.offsetParent) {
curleft = obj.offsetLeft;
curtop = obj.offsetTop;
while (obj = obj.offsetParent) {
curleft += obj.offsetLeft;
curtop += obj.offsetTop;
}
}
return [curleft,curtop];
}
</script>
</head>
<body>
<form name="form2" method="post"
action="ExportOption.aspx?title=Eksporter&amp;scrolling=no&amp;url=http%3a%2f%2ffrekvensregistret.itst.dk%3a80%2fSearch%2fExportOption.aspx&amp;MMSI=0&amp;SFE=&amp;Lno1=&amp;Lno2=0&amp;SFS=&amp;Fadd=&amp;CuNo=0&amp;CS=&amp;FPt=0&amp;CPCt=1100&amp;Type=0&amp;LG=0&amp;FPf=0&amp;CPCF=1000&amp;FCity=&amp;CuCity=&amp;CuName=&amp;CuAdd="
id="form2">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwUJLTI1MDA0NDYxDxQrAAJkZxYCAgMPZBYEAgEPDxYCHgRUZXh0BY8DRGV0IGVyIG11bGlndCBhdCBla3Nwb3J0ZXJlIHPDuGdlcmVzdWx0YXRldCBvZyBkZXJtZWQgZsOlIG11bGlnaGVkIGZvciBhdCBnZW1tZSByZXN1bHRhdGVybmUuIE11bGlnaGVkZXJuZSBmb3IgZWtzcG9ydCBlciBzb20gZsO4bGdlciwgDQpLb21tYXNlcGFyZXJldCBmaWwsIGR2cy4gZXQgZm9ybWF0LCBkZXIga2FuIGltcG9ydGVyZXMgYWYgZGUgZmxlc3RlIGRhdGFiZWhhbmRsaW5nc3Byb2dyYW1tZXIgc29tIGYuZWtzLiBFeGNlbCBvZyBBY2Nlc3MuDQpQREYtZm9ybWF0IChrb3J0IGZvcm1hdCk6IHJlc3VsdGF0b3ZlcnNpZ3RlbiBtZWQgYWxsZSBwb3N0ZXIgbHVra2V0Lg0KUERGLWZvcm1hdCAobGFuZ3QgZm9ybWF0KTogcmVzdWx0YXRvdmVyc2lndGVuIG1lZCBhbGxlIHBvc3RlciDDpWJuZXQuZGQCAw8XAwUEQkFTRWQFA2Nzc2UFD1JlcG9ydFZpZXdTdGF0ZRcDBRJQYWdlUmVxdWVzdENvbnRleHQXAwUKUGFnZU51bWJlcgIBBRVJc0xhc3RQYWdlTnVtYmVyS25vd25oBQ5MYXN0UGFnZU51bWJlcmYFB0ZhY3RvcnkFlgFDcnlzdGFsRGVjaXNpb25zLlJlcG9ydFNvdXJjZS5SZXBvcnRTb3VyY2VGYWN0b3J5LENyeXN0YWxEZWNpc2lvbnMuUmVwb3J0U291cmNlLCBWZXJzaW9uPTEwLjIuMzYwMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTY5MmZiZWE1NTIxZTEzMDQFB1JlZnJlc2hoFgICAg8XAQUCYnMC3/f//w8WAgILDxAPFgIeC18hRGF0YUJvdW5kZ2QPFgFmFgEQBQtNYWluIFJlcG9ydAWoA0FBRUFBQUQvLy8vL0FRQUFBQUFBQUFBRUFRQUFBQnhUZVhOMFpXMHVRMjlzYkdWamRHbHZibk11U0dGemFIUmhZbXhsQndBQUFBcE1iMkZrUm1GamRHOXlCMVpsY25OcGIyNElRMjl0Y0dGeVpYSVFTR0Z6YUVOdlpHVlFjbTkyYVdSbGNnaElZWE5vVTJsNlpRUkxaWGx6QmxaaGJIVmxjd0FBQXdNQUJRVUxDQnhUZVhOMFpXMHVRMjlzYkdWamRHbHZibk11U1VOdmJYQmhjbVZ5SkZONWMzUmxiUzVEYjJ4c1pXTjBhVzl1Y3k1SlNHRnphRU52WkdWUWNtOTJhV1JsY2dqc1VUZy9Bd0FBQUFvS0N3QUFBQWtDQUFBQUNRTUFBQUFRQWdBQUFBTUFBQUFHQkFBQUFBNU1ZWE4wVUdGblpVNTFiV0psY2dZRkFBQUFGVWx6VEdGemRGQmhaMlZPZFcxaVpYSkxibTkzYmdZR0FBQUFDbEJoWjJWT2RXMWlaWElRQXdBQUFBTUFBQUFJQ0FBQUFBQUlBUUFJQ0FFQUFBQUxnFgFmZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WCwUgQ3J5c3RhbFJlcG9ydFZpZXdlcjEkY3RsMDIkY3RsMDAFIENyeXN0YWxSZXBvcnRWaWV3ZXIxJGN0bDAyJGN0bDAxBSBDcnlzdGFsUmVwb3J0Vmlld2VyMSRjdGwwMiRjdGwwMgUgQ3J5c3RhbFJlcG9ydFZpZXdlcjEkY3RsMDIkY3RsMDMFIENyeXN0YWxSZXBvcnRWaWV3ZXIxJGN0bDAyJGN0bDA0BSBDcnlzdGFsUmVwb3J0Vmlld2VyMSRjdGwwMiRjdGwwNQUgQ3J5c3RhbFJlcG9ydFZpZXdlcjEkY3RsMDIkY3RsMDYFIENyeXN0YWxSZXBvcnRWaWV3ZXIxJGN0bDAyJGN0bDA3BSBDcnlzdGFsUmVwb3J0Vmlld2VyMSRjdGwwMiRjdGwxMAUgQ3J5c3RhbFJlcG9ydFZpZXdlcjEkY3RsMDIkY3RsMTIFIENyeXN0YWxSZXBvcnRWaWV3ZXIxJGN0bDAyJGN0bDE0Jy2probkdjCUZgHsOYCepYsetq4="
/>
</div>

<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form2'];
if (!theForm) {
theForm = document.form2;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>



<script
src="/WebResource.axd?d=jg1xeBcifHs7QoMb8El4W_F_B35-MnXTH9X-nTVcEjh5icEql2Ba1mrQS2MVLd950&amp;t=633761800600000000"
type="text/javascript"></script>
<div>

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION"
value="/wEWBgK0tY4MAqygtL4PArOgtL4PArKgtL4PArzPntADAu6f5YwNmUV5bXgs+GNZHXbOwJHDCXlNz2k="
/>
</div>
<!--- --- Page Container --- --->
<div class="popContainer">

<!--- --- Page Header --- --->
<div class="divHeader">
<div class="l"><div class="r"><div class="m"><div class="c">
</div></div></div></div>
</div>
<!--- --- End : Page Header --- --->

<!--- --- Page Content --- --->
<div class="divContent">
<div class="bl"><div class="br">
<div class="l"><div class="r"><div class="c">

<!-- Body -->
<div class="divBody popHelp">
<div class="pageTitle">
<h2>Hvilket format ønsker du?</h2> <div style="text-align:right"><span
class="hlpTxt"><br/><a href="javascript:;" id="permitGrp"
onClick="showHelpText(this);">?</a> <span class="popTxt"
id="pTxt_permitGrp"><strong><em>Hvilket format ønsker du?</em></strong>
<em><span id="_lblHelp">Det er muligt at eksportere søgeresultatet og dermed
få mulighed for at gemme resultaterne. Mulighederne for eksport er som
følger,
Kommasepareret fil, dvs. et format, der kan importeres af de fleste
databehandlingsprogrammer som f.eks. Excel og Access.
PDF-format (kort format): resultatoversigten med alle poster lukket.
PDF-format (langt format): resultatoversigten med alle poster
åbnet.</span></em></span></span></div>
</div>
<div class="hr"><hr/>

</div>
<div>

<LINK rel="stylesheet" type="text/css"
href="/aspnet_client/System_Web/2_0_50727/CrystalReportWebFormViewer3/css/default.css">
<table id="_rbOption" border="0">
<tr>
<td><input id="_rbOption_0" type="radio" name="_rbOption" value="0"
checked="checked" /><label for="_rbOption_0">Kommasepareret fil (kan bl.a.
åbnes med Excel, Access mv.)</label></td>
</tr><tr>
<td><input id="_rbOption_1" type="radio" name="_rbOption" value="1"
/><label for="_rbOption_1">Pdf - kort format (liste med
søgeresultater)</label></td>
</tr><tr>
<td><input id="_rbOption_2" type="radio" name="_rbOption" value="2"
/><label for="_rbOption_2">Pdf - langt format (liste med alle søgeresultater
foldet ud)</label></td>
</tr>
</table>

</div>

<div class="hr"><hr/></div>
<div class="divButtons divButtonsR">
<div class="con">
<span class="lnkBtn"><a id="_lnkOK"
href="javascript:__doPostBack('_lnkOK','')">Fortsæt</a> </span>
<span class="lnkBtn"><a href="javascript:;"
onclick="top.close();">Annuller</a></span>
</div>
</div>
</div>
<!-- End : Body -->

</div></div></div>
<div class="bm"></div>
</div></div>
</div>
<!--- --- End : Page Content --- --->
<iframe id="frmHlpTxt" src=""></iframe>
<div id="divHlpTxt" class="divHlpCon">
<div class="divHlpTxt"><a href="javascript:;"
onclick="closeHlpTxt();"></a><span class="tit"><em></em></span> <span
class="des"><em></em></span></div>
</div>
</div>
<!--- --- End : Page Container --- --->

</form>
</body>
</html>
===

--
Der er 10 slags mennesker - Dem som forstår binær og dem som ikke gør.
There are 10 kinds of people. Those who understand binary and those who
don't.
Es gibt 10 Arten von Menschen. Die, die Binär verstehen, bzw. die, die es
nicht tuhen.
 
T

Tim Williams

In javascript it would be

document.getElementById("_lnkOK").click();

There's likely something similar available via C#

Tim
 
F

Finn Stampe Mikkelsen

Tim Williams said:
In javascript it would be

document.getElementById("_lnkOK").click();

There's likely something similar available via C#

Tim

Hi Tim

Not quite.. That would refer to the eventhandler... So that i can't use..

I've tried this:

HtmlElement el =
(HtmlElement)wB1.Document.GetElementById("_lnkOK");
object obj = el.DomElement;
System.Reflection.MethodInfo mi =
obj.GetType().GetMethod("click");
mi.Invoke(obj, new object[0]);

But the el object keeps returning as null, so i figure it can't locate that
element in the document.. But wht i can't figure out..

/Finn
 
T

Tim Williams

This worked for me:

private void btnTest_Click(object sender, EventArgs e)
{
var doc = wbTest.Document;
var els = doc.GetElementsByTagName("A");
els[0].InvokeMember("click");
}

Not a "named" link, but that shouldn't make any difference....

Tim

Finn Stampe Mikkelsen said:
Tim Williams said:
In javascript it would be

document.getElementById("_lnkOK").click();

There's likely something similar available via C#

Tim

Hi Tim

Not quite.. That would refer to the eventhandler... So that i can't use..

I've tried this:

HtmlElement el =
(HtmlElement)wB1.Document.GetElementById("_lnkOK");
object obj = el.DomElement;
System.Reflection.MethodInfo mi =
obj.GetType().GetMethod("click");
mi.Invoke(obj, new object[0]);

But the el object keeps returning as null, so i figure it can't locate
that element in the document.. But wht i can't figure out..

/Finn
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top