RSS

Selecting the value of an HTML combobox programmatically using a WebBrowser Control

Recently I’ve been playing around with a webbrowser control to automate my interaction with a website for testing purposes. I am using C# and DOT NET.

I found it a bit difficult to change the value of an HTML combobox (i.e. dropdown), but as it turns out it’s rather easy.I used the following code to change the value of a combobox named: “test” to the value 12.

foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("select"))
{
if (el.Name == "test")
{
foreach (HtmlElement comboItem in el.Children)
{
Console.WriteLine(comboItem.InnerText + " " + comboItem.GetAttribute("Selected"));

if (comboItem.InnerText == "12")
{
comboItem.SetAttribute("Selected", "True");
}
}
}

}

This code was used for the following HTML:
<select name=”test”><option value=”10″ SELECTED>10</option><option value=”11″>11</option><option value=”12″>12</option><option value=”13″>13</option><option value=”14″>14</option></select>

foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("input"))
{
if (el.Name.ToLower() == "submit")
{
el.InvokeMember("click");
}
}


Getting the CPU Usage in C#

I recently wanted to get the usage of my CPU in C#. After searching the internet I found a way of doing it using the PerfomanceCounter class. I made a couple of changes and I created the following class, which seems to work.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

{
public class SystemUtils
{
public static long getCpuUsage()
{
PerformanceCounter cpuCounter;
cpuCounter = new PerformanceCounter();

cpuCounter.CategoryName = “Processor”;
cpuCounter.CounterName = “% Processor Time”;
cpuCounter.InstanceName = “_Total”;

cpuCounter.NextValue();
System.Threading.Thread.Sleep(1000);
return (int) cpuCounter.NextValue();
}
}
}

Using the statement: SystemUtils.getCpuUsage() you should be able to get an integer number showing the CPU usage.


.NET Certification

A few weeks ago (http://kyriakos.anastasakis.net/prof/blog/?p=24) I posted that I was interested in .NET certification. Unfortunately I haven’t had the time to work on it since then. The main incentive was to get acquainted with the DSL tools provided in .NET 3.0 (even though the available certification exams are only for .NET 2.0).

Today I read an article in ComputerWeekly that there is a shortage of .NET skills (http://www.computerweekly.com/Articles/2007/09/03/226513/employers-struck-by-shortage-of-.net-skills.htm)

It would be interesting to work on a contact .NET project and see the potential of applying Model Driven techniques in practice… But I guess I will have to find some time to study for the certification first.