<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Altentee » Performance &#38; Test Automation Experts &#187; selenium</title>
	<atom:link href="http://altentee.com/blogs/tag/selenium/feed/" rel="self" type="application/rss+xml" />
	<link>http://altentee.com</link>
	<description>Performance and Test Automation Experts</description>
	<lastBuildDate>Fri, 04 Nov 2011 03:17:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>WatirGrid 1.0.6 released &#8230; can haz Selenium?</title>
		<link>http://altentee.com/blogs/2011/watirgrid-1-0-6-released-can-haz-selenium/</link>
		<comments>http://altentee.com/blogs/2011/watirgrid-1-0-6-released-can-haz-selenium/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 20:54:42 +0000</pubDate>
		<dc:creator>Tim Koopmans</dc:creator>
				<category><![CDATA[Altentee]]></category>
		<category><![CDATA[grid]]></category>
		<category><![CDATA[seconf]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[watir]]></category>

		<guid isPermaLink="false">http://altentee.com/?p=1271</guid>
		<description><![CDATA[I&#8217;ve just released WatirGrid 1.0.6 which now includes support for Selenium WebDriver&#8230; So can I really call it WatirGrid anymore? Realistically the Watir and Selenium projects are headed in the same direction courtesy of WebDriver, so it makes sense to give Watir users (I like to think of them as Ruby users ) the option [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just released WatirGrid 1.0.6 which now <strong>includes support for Selenium WebDriver</strong>&#8230; So can I really call it WatirGrid anymore? Realistically the Watir and Selenium projects are headed in the same direction courtesy of WebDriver, so it makes sense to give Watir users (I like to think of them as Ruby users <img src='http://altentee.com/blogs/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) the option to use Selenium where it best fits.</p>
<p><span id="more-1271"></span></p>
<p>To use Selenium via WatirGrid &#8230;</p>
<p>Get it</p>
<pre>&lt;sudo&gt; gem install watirgrid</pre>
<p>Start a <strong>controller</strong> &#8230;</p>
<pre>controller
I, INFO -- : Controller started on : druby://10.0.1.3:11235</pre>
<p>Start a <strong>provider</strong> with -b selenium &#8230;</p>
<pre>provider -b selenium
I, INFO -- : Provider started on   : druby://10.0.1.3:11236
I, INFO -- : Controller found on   : druby://10.0.1.3:12358
I, INFO -- : Provider registered   : druby://10.0.1.3:12358</pre>
<p>Execute your Selenium code in Ruby!</p>
<pre>&gt;&gt; require 'watirgrid'
=&gt; true
&gt;&gt; Watir::Grid.control(
&gt;&gt;   :controller_uri=&gt;'druby://10.0.1.3:11235') do |driver, id|
&gt;&gt;   driver.navigate.to "http://google.com"
&gt;&gt;   element = driver.find_element(:name, 'q')
&gt;&gt;   element.send_keys "Hello WebDriver!"
&gt;&gt;   element.submit
&gt;&gt;   driver.quit
&gt;&gt; end</pre>
<p>So what&#8217;s the difference between <strong>WatirGrid</strong> and <strong>SeleniumGrid</strong>?</p>
<p>They have radically different architectures in terms of establishing a Grid network. WatirGrid is built on distributed programming paradigms such as Linda and is a pure Ruby implementation. <a href="http://selenium-grid.seleniumhq.org/run_the_demo.html">SeleniumGrid</a> is perhaps a more heavy weight Java implementation (you can still write your tests in most languages) and packs a lot more features for grid control into its design. Both have their own merits, you be the judge!</p>
<p>Next steps for WatirGrid is to look at implementing some type of Capybara adapter, since this tool (and WebRat) appear to dominate the Ruby test automation space. I&#8217;m also working on Gridinit, a commercial implementation on EC2 which is available for beta testing. <a href="http://gridinit.com">Sign up</a> and give it a try!</p>
]]></content:encoded>
			<wfw:commentRss>http://altentee.com/blogs/2011/watirgrid-1-0-6-released-can-haz-selenium/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Watir Day and Selenium Conference .. w00t</title>
		<link>http://altentee.com/blogs/2011/watir-day-and-selenium-conference-w00t/</link>
		<comments>http://altentee.com/blogs/2011/watir-day-and-selenium-conference-w00t/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 02:34:30 +0000</pubDate>
		<dc:creator>Tim Koopmans</dc:creator>
				<category><![CDATA[Altentee]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[watir]]></category>

		<guid isPermaLink="false">http://altentee.com/?p=1269</guid>
		<description><![CDATA[Wow, What an awesome experience. Despite spending most of it jet-lagged, travelling to San Francisco was such a great experience for me, and helped reaffirm just how strong the Watir and Selenium community is. Without dropping names, some of the experiences I got to enjoy were: Sharing late night beers and early morning burgers with [...]]]></description>
			<content:encoded><![CDATA[<p>Wow,</p>
<p>What an awesome experience. Despite spending most of it jet-lagged, travelling to San Francisco was such a great experience for me, and helped reaffirm just how strong the Watir and Selenium community is. Without dropping names, some of the experiences I got to enjoy were:</p>
<ol>
<li>Sharing late night beers and early morning burgers with the <a href="http://twitter.com/#!/charley_baker">leader of Watir development</a></li>
<li><a href="http://twitter.com/#!/charley_baker"></a>Pair coding on watir-webdriver performance extensions with the <a href="https://github.com/jarib">smartest kid in Norway</a></li>
<li>Finally meeting perhaps the <a href="http://watirmelon.com">leader of Australian based Watir testing</a></li>
<li><a href="http://watirmelon.com"></a>Eating chinese with the <a href="http://pettichord.com/">god-father of Watir</a> and hearing some great anecdotes on the origins of Selenium</li>
<li>Shown the light on page objects, opera and superbad with a <a href="http://www.slideshare.net/testrus">Polish born American</a></li>
<li>Hearing about the inner workings of &#8216;that other browser&#8217; from a <a href="http://home.e-tjenesten.org/~ato/">genius at Opera</a></li>
<li>Learning more about the Watir community and getting a t<a href="http://zeljkofilipin.com/">hirst for Croatian micro breweries</a></li>
<li>Meeting my <a href="http://lightbody.net/blog/">role model in person</a> and perhaps feeling a bit shied by his awesomeness!</li>
<li>Getting <a href="http://www.linkedin.com/in/bramhaghosh">some great advice</a> and tips for my own startup</li>
<li>Being awed and perhaps jealous (in a slightly convict vs. colonial way) of the <a href="http://www.google.com.au/search?q=steel+cage+knife+fight">greatest mind behind webdriver</a></li>
</ol>
<p>I met many other people whilst there, did tons of late night coding and got to experience public speaking for the first time. A big thank you to all the organisers of #watirday and #seconf. Looking forward to the next!</p>
]]></content:encoded>
			<wfw:commentRss>http://altentee.com/blogs/2011/watir-day-and-selenium-conference-w00t/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Regex in BrowserMob Scripts</title>
		<link>http://altentee.com/blogs/2010/regex-in-browsermob-scripts/</link>
		<comments>http://altentee.com/blogs/2010/regex-in-browsermob-scripts/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 00:27:25 +0000</pubDate>
		<dc:creator>Tim Koopmans</dc:creator>
				<category><![CDATA[Altentee]]></category>
		<category><![CDATA[browsermob]]></category>
		<category><![CDATA[selenium]]></category>

		<guid isPermaLink="false">http://altentee.com/2010/regex-in-browsermob-scripts/</guid>
		<description><![CDATA[If you&#8217;re using an RBU or VU you may need to extract content from the previous response. For example, enumerate a link to a PDF file for subsequent download. The BrowserMob interface has a handy findRegexMatches method you can call as follows: var link = browserMob.findRegexMatches(selenium.getHtmlSource(), 'href=&#34;(.+?pdf)&#34;'); browserMob.beginStep(&#34;16_download_content&#34;); browser.get(link[0], 200); browserMob.endStep(); It takes a string [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re using an RBU or VU you may need to extract content from the previous response. For example, enumerate a link to a PDF file for subsequent download.</p>
<p>The BrowserMob interface has a handy findRegexMatches method you can call as follows:</p>

<div class="wp_syntax"><div class="code"><pre class="js" style="font-family:monospace;">var link = browserMob.findRegexMatches(selenium.getHtmlSource(), 'href=&quot;(.+?pdf)&quot;');
browserMob.beginStep(&quot;16_download_content&quot;);
  browser.get(link[0], 200);
browserMob.endStep();</pre></div></div>

<p>It takes a string input and regex pattern parameters. For the string input I am simply passing in the HTML source from the previous request based on a browser object:<br />
<code>var browser  = browserMob.getActiveHttpClient();</code></p>
<p>The regex pattern is self explanatory. The link object will be an array of matches; in this case I&#8217;m issuing a get request for the first link in the match array. You might want to add some more code to make this more robust e.g. if no links are found etc.</p>
<p>Pretty simple hey!</p>
]]></content:encoded>
			<wfw:commentRss>http://altentee.com/blogs/2010/regex-in-browsermob-scripts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emulating Think Time and Pacing with BrowserMob</title>
		<link>http://altentee.com/blogs/2010/emulating-think-time-and-pacing-with-browsermob/</link>
		<comments>http://altentee.com/blogs/2010/emulating-think-time-and-pacing-with-browsermob/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 00:08:34 +0000</pubDate>
		<dc:creator>Tim Koopmans</dc:creator>
				<category><![CDATA[Altentee]]></category>
		<category><![CDATA[browsermob]]></category>
		<category><![CDATA[selenium]]></category>

		<guid isPermaLink="false">http://altentee.com/?p=876</guid>
		<description><![CDATA[If you come from the commercial toolset mindset, you might be interested in how we achieve think time and pacing when using alternatives such as BrowserMob. Think Time Think time, is normally defined as the amount of time a virtual user &#8216;thinks&#8217; between individual steps within a transaction. This time is usually excluded from response [...]]]></description>
			<content:encoded><![CDATA[<p>If you come from the commercial toolset mindset, you might be interested in how we achieve think time and pacing when using alternatives such as <a href="http://browsermob.com">BrowserMob</a>.</p>
<p><strong>Think Time</strong><br />
Think time, is normally defined as the amount of time a virtual user &#8216;thinks&#8217; between individual steps within a transaction. This time is usually excluded from response time measurements and is an important inclusion in terms of script behaviour. Having no think time means the virtual user will race through transactions more quickly than a normal user would which potentially creates unrealistic load. So how do we emulate think time behaviour in a BrowserMob script?</p>
<p>The BrowserMob replay engine drives Selenium scripts, so you will need to play in the JavaScript sandbox so to speak, in order to emulate think time. There&#8217;s some well documented ways to implement this on the BrowserMob blog <a href="http://blog.browsermob.com/help/creating-a-test/introducing-user-think-time/">here</a>.</p>
<p>The BrowserMob interface (<a href="http://static.browsermob.com/api/com/browsermob/api/BrowserMob.html">API documentation here</a>) has a pause method as follows:<br />
<code>browserMob.pause(15000); </code></p>
<p>This effectively pauses the user for a period of 15 seconds in the previous example.</p>
<p>The Selenium interface (<a href="http://static.browsermob.com/api/com/browsermob/api/Selenium.html">API documentation here</a>) also has a similar setSpeed method which will set the number of milliseconds to pause after each step elminating the need to specify individual pause statements between each step as follows:<br />
<code>selenium.setSpeed(2000);</code></p>
<p>If you would like to emulate some common think time settings as you might see in a LoadRunner script you can implement the following at the top of your RBU or VU scripts:</p>

<div class="wp_syntax"><div class="code"><pre class="js" style="font-family:monospace;">// Multiply think time by:
var think_time_multiple = 1;
&nbsp;
// Use random percentage for think time e.g. 50 - 100:
var think_time_percentage = 50 + (Math.random() * 100);
&nbsp;
// Limit think time to:
var think_time_limit = 0;
&nbsp;
// Set think time to:
var think_time = 3; //seconds
&nbsp;
if(think_time_limit &gt; 0) {
  selenium.setSpeed(think_time_limit * 1000);
} else {
  selenium.setSpeed(think_time * think_time_multiple * (think_time_percentage/100) * 1000);
}</pre></div></div>

<p>If you need additional think time after steps then you can add the following statement where required:<br />
<code>browserMob.pause(3000 * think_time_multiple * (think_time_percentage/100)); </code></p>
<p><strong>Pacing</strong><br />
Some people like to control transaction volume/throughput by messing about with think time. I don&#8217;t favour this approach because you need to first be cognisant of how long each iteration will take including think time then adjust think time accordingly. Once it&#8217;s set (or hardcoded into your script) then the vusers are stuck with that setting. I much prefer the pacing concept, which determines how long a vuser should &#8216;wait&#8217; before starting the next iteration. This wait time is determined by elapsed time including any server side processing, not just user think time. So how do we emulate pacing in a BrowserMob script?</p>
<p>First I like to set some targets such as the transaction rate (per hour per user) and then calculate the pacing from this target. I also set a variable iterate to true, which comes into play in the main body of the script.</p>

<div class="wp_syntax"><div class="code"><pre class="js" style="font-family:monospace;">// Run logic
var transaction_rate = 10;  // Target transaction rate per hour per user
var pacing  = 60*60*1000 / transaction_rate;
var iterate = true;</pre></div></div>

<p>Now we&#8217;ve got the target and pacing set, we can get into the main logic. Let&#8217;s start an iteration.</p>

<div class="wp_syntax"><div class="code"><pre class="js" style="font-family:monospace;">while (iterate) {
  var start = new Date();
  browserMob.beginTransaction();
  ...</pre></div></div>

<p>Notice I&#8217;ve used a while loop which checks for the iterate boolean and creates a start date time stamp. I also initiate a BrowserMob transaction.</p>
<p>After we complete the iteration (which is essentially a bunch of BrowserMob steps) we can close the while loop with some pacing logic.</p>

<div class="wp_syntax"><div class="code"><pre class="js" style="font-family:monospace;">  ...
  // Calculate Pacing
  var finish  = new Date();
  var elapsed = finish.getTime() - start.getTime();
&nbsp;
  if (browserMob.isValidation()) {
    browserMob.log(&quot;Adjusted pacing would be &quot;+ (pacing - elapsed) + &quot; msecs&quot;);
    browserMob.log(&quot;or &quot; + Math.round(3600000 / (pacing - elapsed) ) + &quot; trans/hour&quot;);
    iterate = false;
  } else {
    if(pacing &gt; elapsed)
      browserMob.pause(pacing - elapsed);
  }
&nbsp;
  browserMob.endTransaction();
}</pre></div></div>

<p>This will calculate the finish date time stamp and then determine the difference between the previously calculated target pacing and the actual time elapsed. If there is a difference then the user will pause, otherwise it will just continue on to the next iteration. This basically allows you to target a set number of transactions per hour. When validating the script it will output these calculations to the log file.</p>
]]></content:encoded>
			<wfw:commentRss>http://altentee.com/blogs/2010/emulating-think-time-and-pacing-with-browsermob/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Instant Website Tests with BrowserMob</title>
		<link>http://altentee.com/blogs/2010/instant-website-tests-with-browsermob/</link>
		<comments>http://altentee.com/blogs/2010/instant-website-tests-with-browsermob/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 00:40:28 +0000</pubDate>
		<dc:creator>Tim Koopmans</dc:creator>
				<category><![CDATA[Altentee]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://altentee.com/?p=782</guid>
		<description><![CDATA[Can you afford a slow landing page? Google AdWords page quality criteria are many, a prominent check being your landing page load time. A slow load time can lead to a lower quality score. Make sure you&#8217;re not wasting effort on advertising campaigns. Altentee uses BrowserMob to help check website performance for clients from multiple [...]]]></description>
			<content:encoded><![CDATA[<p>Can you afford a slow landing page?</p>
<p>Google AdWords page quality criteria are many, a prominent check being your <a href="http://adwords.google.com/support/aw/bin/answer.py?hl=en&amp;answer=87144">landing page load time</a>. A slow load time can lead to a lower quality score.</p>
<p><a href="http://altentee.com/blogs/wp-content/uploads/2010/01/Screen-shot-2010-01-06-at-9.11.48-AM.png"><img class="size-full wp-image-784 alignleft" title="Screen shot 2010-01-06 at 9.11.48 AM" src="http://altentee.com/blogs/wp-content/uploads/2010/01/Screen-shot-2010-01-06-at-9.11.48-AM.png" alt="" width="274" height="95" /></a>Make sure you&#8217;re not wasting effort on advertising campaigns. <strong>Altentee </strong>uses <a href="http://browsermob.com">BrowserMob</a> to help check website performance for clients from multiple locations. You can run a free check using the form below.</p>
<form id="InstantTest" action="http://browsermob.com/instant-website-test" method="post">
<input id="InstantTest_url" class="urlTextBox default_value" name="url" type="text" value="yoursite.com" />
<input type="submit" value="go" /> (redirects to BrowserMob)<br />
</form>
<p>If you need help optimizing your landing page, or help with performance testing in general feel free to <a href="http://altentee.com/corporate/contact/">contact</a> <strong>Altentee</strong> today.</p>
]]></content:encoded>
			<wfw:commentRss>http://altentee.com/blogs/2010/instant-website-tests-with-browsermob/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Selenium RC to automate your web based testing</title>
		<link>http://altentee.com/blogs/2007/using-selenium-rc-to-automate-your-web-based-testing/</link>
		<comments>http://altentee.com/blogs/2007/using-selenium-rc-to-automate-your-web-based-testing/#comments</comments>
		<pubDate>Mon, 31 Dec 2007 01:53:04 +0000</pubDate>
		<dc:creator>Tim Koopmans</dc:creator>
				<category><![CDATA[Altentee]]></category>
		<category><![CDATA[selenium]]></category>

		<guid isPermaLink="false">http://90kts.com/blog/2007/using-selenium-rc-to-automate-your-web-based-testing/</guid>
		<description><![CDATA[Selenium is an awesome free alternative to apps such as Quick Test Pro and the like, providing you with a browser based automation suite for web applications. Selenium uses JavaScript and Iframes to embed a test automation engine in your browser. This technique should work with any JavaScript-enabled browser. Selenium Remote Control provides a Selenium [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.openqa.org/selenium/">Selenium</a> is an awesome free alternative to apps such as Quick Test Pro and the like, providing you with a browser based automation suite for web applications.<br />
<blockquote>Selenium uses JavaScript and Iframes to embed a test automation engine in your browser. This technique should work with any JavaScript-enabled browser. Selenium Remote Control provides a Selenium Server, which can automatically start/stop/control any supported browser. It works by using Selenium Core, a pure-HTML+JS library that performs automated tasks in JavaScript.</p></blockquote>
<p>In this demo, I&#8217;ve used Selenium-RC and Perl to automate the checking of a promotional website called <a href="http://www.freestuffday.com.au">FreeStuffDay</a> where every month you can have the chance to secure an advertised item for free. Instead of me sitting behind a browser checking the availability of free items manually, I&#8217;ve written a quick demo script to show you how it&#8217;s done from Perl and Selenium-RC.<br />
<span id="more-106"></span></p>
<p>In order to build the script using a record-play method like other mainstream apps, you can download and run Selenium IDE, which is compatible with major browsers. You can export various formats from the Selenium IDE into a portable script. Make the necessary tweaks to your script including things like assertions and page load times. The main logic of my script will log in to the site, check for a free car, and if it doesn&#8217;t find one, then loops indefinitely. It also checks page load times. If it finds a winner, then I&#8217;d add some extra code to SMS or email me that the session is a winner &#8230;</p>
<p>[WINDOWSMEDIA http://90kts.com/blog/wp-content/uploads/2007/12/test.wmv 428 240 false true]</p>
<p><a href="http://90kts.com/blog/wp-content/uploads/2007/12/test.wmv">Download video &#8230;</a></p>
<p>My finished code looked something like this &#8230; You can see how easy it is to write a fairly simple and robust web automation script, that actually uses a browser to drive your code, which results in a *more* realistic simulation of a typical user &#8230;<br />
<code>#!/usr/bin/perl<br />
# #########################################################################<br />
# FreeStuffDay Selenium Script<br />
# $Revision: 0.2 $<br />
# $Date: 2007/12/31 12:26:43 $<br />
# $Author: koops $<br />
# #########################################################################</p>
<p>use strict;<br />
use warnings;<br />
use Time::HiRes qw(gettimeofday tv_interval);<br />
use Test::WWW::Selenium;<br />
use WWW::Selenium::Util qw(server_is_running);<br />
use Test::More;<br />
use Test::Exception;</p>
<p>my ($host, $port) = server_is_running();<br />
if ($host and $port) {<br />
    plan tests => 1;<br />
}<br />
else {<br />
    plan skip_all => "No selenium server found!";<br />
    exit 0;<br />
}</p>
<p># Start up a new browser session on our Selenium RC server<br />
my $sel = Test::WWW::Selenium->new( host => "localhost",<br />
                                    port => 4444,<br />
                                    browser => "*firefox",<br />
                                    browser_url => "http://www.freestuffday.com.au" );</p>
<p># Open the main page<br />
$sel->open("/");<br />
print "Loading main page ...\n";<br />
$sel->pause(1000);</p>
<p># Sign in with your credentials<br />
$sel->click("link=or SIGN IN NOW!");<br />
$sel->wait_for_page_to_load("20000");<br />
$sel->type("txtEmailAddress", "user\@email.address.com");<br />
$sel->type("txtPassword", "*******");<br />
$sel->click("btnLogin");<br />
$sel->wait_for_page_to_load("20000");<br />
print "Successful login!\n";</p>
<p># Check for freebies, in this case I'm after the Toyota Yaris<br />
$sel->click("ctl00_phFreestuffDayMaster_reptCompanyTile_ctl00_imgTile");<br />
$sel->wait_for_page_to_load("20000");<br />
$sel->click("ctl00_phFreestuffDayMaster_dlProducts_ctl00_lnkProductName");<br />
$sel->wait_for_page_to_load("20000");<br />
print "Average page load response times (seconds)\n";</p>
<p># The following method checks if the selected product submit button is enabled ...<br />
my $buttonEnabled=$sel->is_editable("ctl00\$phFreestuffDayMaster\$cmdSelectProduct");</p>
<p># If the button is not enabled, then loop repeatedly using the breadcrumb<br />
# navigation to switch between pages automatically and re-check if it is enabled ...<br />
while(!$buttonEnabled){<br />
	my $t0 = [gettimeofday];<br />
	$sel->click("//a[2]/font");<br />
	$sel->wait_for_page_to_load("20000");<br />
	$sel->click("ctl00_phFreestuffDayMaster_dlProducts_ctl00_lnkProductName");<br />
	$sel->wait_for_page_to_load("20000");<br />
	$buttonEnabled=$sel->is_editable("ctl00\$phFreestuffDayMaster\$cmdSelectProduct");<br />
	# While I'm at it, check the response time of this business event<br />
	my $t1 = [gettimeofday];<br />
    my $t0_t1 = tv_interval $t0, $t1;<br />
    my $elapsed = tv_interval ($t0);<br />
	# Print out the average response time ...<br />
    print "\t$elapsed\n";<br />
}</p>
<p># If the script falls out of the while loop on enable, make sure we click the submit button<br />
$sel->click_ok("ctl00\$phFreestuffDayMaster\$cmdSelectProduct");<br />
$sel->wait_for_page_to_load("30000");</p>
<p># Finally, insert some additional code to send an email or SMS notifying we have a winner!<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://altentee.com/blogs/2007/using-selenium-rc-to-automate-your-web-based-testing/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

