<?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>Selenium WebDriver</title>
	<atom:link href="http://selenium.polteq.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://selenium.polteq.com/en</link>
	<description></description>
	<lastBuildDate>Thu, 28 Mar 2013 10:14:54 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Create a screenshot of WebElements with WebDriver</title>
		<link>http://selenium.polteq.com/en/create-a-screenshot-of-webelements-with-webdriver/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=create-a-screenshot-of-webelements-with-webdriver</link>
		<comments>http://selenium.polteq.com/en/create-a-screenshot-of-webelements-with-webdriver/#comments</comments>
		<pubDate>Thu, 13 Dec 2012 10:50:08 +0000</pubDate>
		<dc:creator>Roy de Kleijn</dc:creator>
				<category><![CDATA[Selenium IDE]]></category>

		<guid isPermaLink="false">http://selenium.polteq.com/en/?p=953</guid>
		<description><![CDATA[<p>Problem Sometimes we like to create a screenshot of specific elements. It&#8217;s unnecessary to take a screenshot of the entire website. We can implement the following class to achieve this. Solution rawhighlightedcopyprint? import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; &#8230; <a href="http://selenium.polteq.com/en/create-a-screenshot-of-webelements-with-webdriver/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://selenium.polteq.com/en/create-a-screenshot-of-webelements-with-webdriver/">Create a screenshot of WebElements with WebDriver</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></description>
				<content:encoded><![CDATA[<h1>Problem</h1>
<p>Sometimes we like to create a screenshot of specific elements. It&#8217;s unnecessary to take a screenshot of the entire website. We can implement the following class to achieve this.</p>
<h1>Solution</h1>
<div class="highlight-wrapper java">
<div class="tools">
<div class="wrap">
<a href="#" class="show-raw">raw</a><a href="#" class="show-colored">highlighted</a><a href="#" class="to-clipboard">copy</a><a href="#" class="print">print</a><a href="#" class="about">?</a>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<pre class="raw"><code lang="java">
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.Point;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.Augmenter;

public class TakeElementScreenshot {
    private final String screenshotFolder = "target/screenshots/";
    protected WebDriver driver;

    public TakeElementScreenshot(WebDriver driver) {
        this.driver = driver;
    }

    public void shoot(WebElement element) throws IOException {
        try {
            driver = new Augmenter().augment(driver);
        } catch (Exception ignored) {
        }
        File screen = ((TakesScreenshot) driver)
                .getScreenshotAs(OutputType.FILE);

        Point p = element.getLocation();

        int width = element.getSize().getWidth();
        int height = element.getSize().getHeight();

        Rectangle rect = new Rectangle(width, height);

        BufferedImage img = null;
        img = ImageIO.read(screen);

        BufferedImage dest = img.getSubimage(p.getX(), p.getY(), rect.width,
                rect.height);

        ImageIO.write(dest, "png", screen);
        FileUtils.copyFile(screen,
                new File(screenshotFolder + System.nanoTime() + ".png"));
    }

}

</code></pre>
<div class="highlighted">
<table class="highlighttable">
<tr>
<td class="linenos">
<div class="linenodiv">
<pre class="nl"> 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50</pre>
</div>
</td>
<td class="code">
<div class="highlight">
<pre><span class="kn">import</span> <span class="nn">java.awt.Rectangle</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">java.awt.image.BufferedImage</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">java.io.File</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">java.io.IOException</span><span class="o">;</span>

<span class="kn">import</span> <span class="nn">javax.imageio.ImageIO</span><span class="o">;</span>

<span class="kn">import</span> <span class="nn">org.apache.commons.io.FileUtils</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.openqa.selenium.OutputType</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.openqa.selenium.Point</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.openqa.selenium.TakesScreenshot</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.openqa.selenium.WebDriver</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.openqa.selenium.WebElement</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.openqa.selenium.remote.Augmenter</span><span class="o">;</span>

<span class="kd">public</span> <span class="kd">class</span> <span class="nc">TakeElementScreenshot</span> <span class="o">{</span>
    <span class="kd">private</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">screenshotFolder</span> <span class="o">=</span> <span class="s">"target/screenshots/"</span><span class="o">;</span>
    <span class="kd">protected</span> <span class="n">WebDriver</span> <span class="n">driver</span><span class="o">;</span>

    <span class="kd">public</span> <span class="nf">TakeElementScreenshot</span><span class="o">(</span><span class="n">WebDriver</span> <span class="n">driver</span><span class="o">)</span> <span class="o">{</span>
        <span class="k">this</span><span class="o">.</span><span class="na">driver</span> <span class="o">=</span> <span class="n">driver</span><span class="o">;</span>
    <span class="o">}</span>

    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">shoot</span><span class="o">(</span><span class="n">WebElement</span> <span class="n">element</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
        <span class="k">try</span> <span class="o">{</span>
            <span class="n">driver</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Augmenter</span><span class="o">().</span><span class="na">augment</span><span class="o">(</span><span class="n">driver</span><span class="o">);</span>
        <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">Exception</span> <span class="n">ignored</span><span class="o">)</span> <span class="o">{</span>
        <span class="o">}</span>
        <span class="n">File</span> <span class="n">screen</span> <span class="o">=</span> <span class="o">((</span><span class="n">TakesScreenshot</span><span class="o">)</span> <span class="n">driver</span><span class="o">)</span>
                <span class="o">.</span><span class="na">getScreenshotAs</span><span class="o">(</span><span class="n">OutputType</span><span class="o">.</span><span class="na">FILE</span><span class="o">);</span>

        <span class="n">Point</span> <span class="n">p</span> <span class="o">=</span> <span class="n">element</span><span class="o">.</span><span class="na">getLocation</span><span class="o">();</span>

        <span class="kt">int</span> <span class="n">width</span> <span class="o">=</span> <span class="n">element</span><span class="o">.</span><span class="na">getSize</span><span class="o">().</span><span class="na">getWidth</span><span class="o">();</span>
        <span class="kt">int</span> <span class="n">height</span> <span class="o">=</span> <span class="n">element</span><span class="o">.</span><span class="na">getSize</span><span class="o">().</span><span class="na">getHeight</span><span class="o">();</span>

        <span class="n">Rectangle</span> <span class="n">rect</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Rectangle</span><span class="o">(</span><span class="n">width</span><span class="o">,</span> <span class="n">height</span><span class="o">);</span>

        <span class="n">BufferedImage</span> <span class="n">img</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
        <span class="n">img</span> <span class="o">=</span> <span class="n">ImageIO</span><span class="o">.</span><span class="na">read</span><span class="o">(</span><span class="n">screen</span><span class="o">);</span>

        <span class="n">BufferedImage</span> <span class="n">dest</span> <span class="o">=</span> <span class="n">img</span><span class="o">.</span><span class="na">getSubimage</span><span class="o">(</span><span class="n">p</span><span class="o">.</span><span class="na">getX</span><span class="o">(),</span> <span class="n">p</span><span class="o">.</span><span class="na">getY</span><span class="o">(),</span> <span class="n">rect</span><span class="o">.</span><span class="na">width</span><span class="o">,</span>
                <span class="n">rect</span><span class="o">.</span><span class="na">height</span><span class="o">);</span>

        <span class="n">ImageIO</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="n">dest</span><span class="o">,</span> <span class="s">"png"</span><span class="o">,</span> <span class="n">screen</span><span class="o">);</span>
        <span class="n">FileUtils</span><span class="o">.</span><span class="na">copyFile</span><span class="o">(</span><span class="n">screen</span><span class="o">,</span>
                <span class="k">new</span> <span class="nf">File</span><span class="o">(</span><span class="n">screenshotFolder</span> <span class="o">+</span> <span class="n">System</span><span class="o">.</span><span class="na">nanoTime</span><span class="o">()</span> <span class="o">+</span> <span class="s">".png"</span><span class="o">));</span>
    <span class="o">}</span>

<span class="o">}</span>
</pre>
</div>
</td>
</tr>
</table>
</div>
</div>
<h1>How to use it</h1>
<div class="highlight-wrapper java">
<div class="tools">
<div class="wrap">
<a href="#" class="show-raw">raw</a><a href="#" class="show-colored">highlighted</a><a href="#" class="to-clipboard">copy</a><a href="#" class="print">print</a><a href="#" class="about">?</a>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<pre class="raw"><code lang="java">
@Test
public void takeScreenshotOfElement() throws IOException {
   // Find the text input element by its name
   WebElement element = driver.findElement(By.name("q"));

   // Enter something to search for
   element.sendKeys("Cheese!");
        
   // takescreenshot of element
   TakeElementScreenshot screenshot = new TakeElementScreenshot(driver);
   screenshot.shoot(element);

   // Now submit the form. WebDriver will find the form for us from the element
   element.submit();

   // Check the title of the page
   System.out.println("Page title is: " + driver.getTitle());
}
</code></pre>
<div class="highlighted">
<table class="highlighttable">
<tr>
<td class="linenos">
<div class="linenodiv">
<pre class="nl"> 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18</pre>
</div>
</td>
<td class="code">
<div class="highlight">
<pre><span class="nd">@Test</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">takeScreenshotOfElement</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
   <span class="c1">// Find the text input element by its name</span>
   <span class="n">WebElement</span> <span class="n">element</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">By</span><span class="o">.</span><span class="na">name</span><span class="o">(</span><span class="s">"q"</span><span class="o">));</span>

   <span class="c1">// Enter something to search for</span>
   <span class="n">element</span><span class="o">.</span><span class="na">sendKeys</span><span class="o">(</span><span class="s">"Cheese!"</span><span class="o">);</span>
        
   <span class="c1">// takescreenshot of element</span>
   <span class="n">TakeElementScreenshot</span> <span class="n">screenshot</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TakeElementScreenshot</span><span class="o">(</span><span class="n">driver</span><span class="o">);</span>
   <span class="n">screenshot</span><span class="o">.</span><span class="na">shoot</span><span class="o">(</span><span class="n">element</span><span class="o">);</span>

   <span class="c1">// Now submit the form. WebDriver will find the form for us from the element</span>
   <span class="n">element</span><span class="o">.</span><span class="na">submit</span><span class="o">();</span>

   <span class="c1">// Check the title of the page</span>
   <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Page title is: "</span> <span class="o">+</span> <span class="n">driver</span><span class="o">.</span><span class="na">getTitle</span><span class="o">());</span>
<span class="o">}</span>
</pre>
</div>
</td>
</tr>
</table>
</div>
</div>
<h1>What has been done&#8230;</h1>
<p>We have made a screenshot of a specific element.</p>
<h1>Code on Github</h1>
<p>The code is available on Github at the following location: http://github.com/roydekleijn/WebDriver-take-screenshot-of-element</p>
<p>The post <a href="http://selenium.polteq.com/en/create-a-screenshot-of-webelements-with-webdriver/">Create a screenshot of WebElements with WebDriver</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://selenium.polteq.com/en/create-a-screenshot-of-webelements-with-webdriver/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Run your Selenium tests in the cloud with TestingBot</title>
		<link>http://selenium.polteq.com/en/run-your-selenium-tests-in-the-cloud-with-testingbot/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=run-your-selenium-tests-in-the-cloud-with-testingbot</link>
		<comments>http://selenium.polteq.com/en/run-your-selenium-tests-in-the-cloud-with-testingbot/#comments</comments>
		<pubDate>Mon, 25 Jun 2012 22:54:16 +0000</pubDate>
		<dc:creator>Roy de Kleijn</dc:creator>
				<category><![CDATA[Selenium Grid 2]]></category>

		<guid isPermaLink="false">http://selenium.polteq.com/en/?p=928</guid>
		<description><![CDATA[<p>Ideally you want to run your tests in all different browsers on all platforms. It can be achieved with Selenium Grid. Setting up Selenium Grid might be an time-consuming task and you have to deal with license costs. Therefore, some &#8230; <a href="http://selenium.polteq.com/en/run-your-selenium-tests-in-the-cloud-with-testingbot/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://selenium.polteq.com/en/run-your-selenium-tests-in-the-cloud-with-testingbot/">Run your Selenium tests in the cloud with TestingBot</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></description>
				<content:encoded><![CDATA[<p> Ideally you want to run your tests in all different browsers on all platforms. It can be achieved with Selenium Grid. Setting up Selenium Grid might be an time-consuming task and you have to deal with license costs. Therefore, some companies providing cloud-based solutions.</p>
<p><a href="http://testingbot.com/" target="_blank">TestingBot</a> offers a cloud-based solution with many extra functionalities, such as: taking screenshots per command, video recording of the test execution, integrated proxy and advanced reporting.</p>
<p><a href="http://testingbot.com/" target="_blank">TestingBot </a>can be used with all kinds of programming languages. In this tutorial you will see how easy it is to run your tests in the cloud.</p>
<h2>How to to it</h2>
<ol>
<li>Create an account on <a href="http://testingbot.com/" target="_blank">TestingBot</a> and try it for free. (or choose a sufficient plan)</li>
<li>Download the required library from: <a href="https://github.com/testingbot" target="_blank">https://github.com/testingbot</a>
</li>
<li>Change the remote address, so the tests will be run at the remote Grid.</li>
</ol>
<div class="highlight-wrapper java">
<div class="tools">
<div class="wrap">
<a href="#" class="show-raw">raw</a><a href="#" class="show-colored">highlighted</a><a href="#" class="to-clipboard">copy</a><a href="#" class="print">print</a><a href="#" class="about">?</a>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<pre class="raw"><code lang="java">
import java.net.URL;

import org.openqa.selenium.By;
import org.openqa.selenium.Platform;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class TestingBotTest {
    private WebDriver driver;

    @BeforeClass
    public void setUp() throws Exception {
        DesiredCapabilities capabillities = DesiredCapabilities.firefox();
        capabillities.setCapability("version", "11");
        capabillities.setCapability("platform", Platform.WINDOWS);
        capabillities.setCapability("name", "Testing Selenium 2");

        driver = new RemoteWebDriver(
                new URL(
                        "http://ClientKey:ClientSecret@hub.testingbot.com:4444/wd/hub"),
                capabillities);
    }

    @Test
    public void testSimple() throws Exception {
        driver.get("http://selenium.polteq.com/prestashop/");
        driver.findElement(By.cssSelector("input#search_query_top")).sendKeys(
                "ipod nano");
        driver.findElement(By.cssSelector("input[name='submit_search']"))
                .click();
        String searchHeader = driver.findElement(By.cssSelector("H1"))
                .getText().toLowerCase();

        Assert.assertTrue(searchHeader.contains("ipod nano"));
    }

    @AfterClass
    public void tearDown() throws Exception {
        driver.quit();
    }
}
</code></pre>
<div class="highlighted">
<table class="highlighttable">
<tr>
<td class="linenos">
<div class="linenodiv">
<pre class="nl"> 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46</pre>
</div>
</td>
<td class="code">
<div class="highlight">
<pre><span class="kn">import</span> <span class="nn">java.net.URL</span><span class="o">;</span>

<span class="kn">import</span> <span class="nn">org.openqa.selenium.By</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.openqa.selenium.Platform</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.openqa.selenium.WebDriver</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.openqa.selenium.remote.DesiredCapabilities</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.openqa.selenium.remote.RemoteWebDriver</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.testng.Assert</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.testng.annotations.AfterClass</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.testng.annotations.BeforeClass</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.testng.annotations.Test</span><span class="o">;</span>

<span class="kd">public</span> <span class="kd">class</span> <span class="nc">TestingBotTest</span> <span class="o">{</span>
    <span class="kd">private</span> <span class="n">WebDriver</span> <span class="n">driver</span><span class="o">;</span>

    <span class="nd">@BeforeClass</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">setUp</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
        <span class="n">DesiredCapabilities</span> <span class="n">capabillities</span> <span class="o">=</span> <span class="n">DesiredCapabilities</span><span class="o">.</span><span class="na">firefox</span><span class="o">();</span>
        <span class="n">capabillities</span><span class="o">.</span><span class="na">setCapability</span><span class="o">(</span><span class="s">"version"</span><span class="o">,</span> <span class="s">"11"</span><span class="o">);</span>
        <span class="n">capabillities</span><span class="o">.</span><span class="na">setCapability</span><span class="o">(</span><span class="s">"platform"</span><span class="o">,</span> <span class="n">Platform</span><span class="o">.</span><span class="na">WINDOWS</span><span class="o">);</span>
        <span class="n">capabillities</span><span class="o">.</span><span class="na">setCapability</span><span class="o">(</span><span class="s">"name"</span><span class="o">,</span> <span class="s">"Testing Selenium 2"</span><span class="o">);</span>

        <span class="n">driver</span> <span class="o">=</span> <span class="k">new</span> <span class="n">RemoteWebDriver</span><span class="o">(</span>
                <span class="k">new</span> <span class="nf">URL</span><span class="o">(</span>
                        <span class="s">"http://ClientKey:ClientSecret@hub.testingbot.com:4444/wd/hub"</span><span class="o">),</span>
                <span class="n">capabillities</span><span class="o">);</span>
    <span class="o">}</span>

    <span class="nd">@Test</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">testSimple</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="s">"http://selenium.polteq.com/prestashop/"</span><span class="o">);</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">By</span><span class="o">.</span><span class="na">cssSelector</span><span class="o">(</span><span class="s">"input#search_query_top"</span><span class="o">)).</span><span class="na">sendKeys</span><span class="o">(</span>
                <span class="s">"ipod nano"</span><span class="o">);</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">By</span><span class="o">.</span><span class="na">cssSelector</span><span class="o">(</span><span class="s">"input[name='submit_search']"</span><span class="o">))</span>
                <span class="o">.</span><span class="na">click</span><span class="o">();</span>
        <span class="n">String</span> <span class="n">searchHeader</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">By</span><span class="o">.</span><span class="na">cssSelector</span><span class="o">(</span><span class="s">"H1"</span><span class="o">))</span>
                <span class="o">.</span><span class="na">getText</span><span class="o">().</span><span class="na">toLowerCase</span><span class="o">();</span>

        <span class="n">Assert</span><span class="o">.</span><span class="na">assertTrue</span><span class="o">(</span><span class="n">searchHeader</span><span class="o">.</span><span class="na">contains</span><span class="o">(</span><span class="s">"ipod nano"</span><span class="o">));</span>
    <span class="o">}</span>

    <span class="nd">@AfterClass</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">tearDown</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">quit</span><span class="o">();</span>
    <span class="o">}</span>
<span class="o">}</span>
</pre>
</div>
</td>
</tr>
</table>
</div>
</div>
<h2>Additional Test Options</h2>
<h3>Screenshots</h3>
<p>Capture screenshots at every step of the test.</p>
<div class="highlight-wrapper java">
<div class="tools">
<div class="wrap">
<a href="#" class="show-raw">raw</a><a href="#" class="show-colored">highlighted</a><a href="#" class="to-clipboard">copy</a><a href="#" class="print">print</a><a href="#" class="about">?</a>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<pre class="raw"><code lang="java">
capabillities.setCapability("screenshot", true);
</code></pre>
<div class="highlighted">
<table class="highlighttable">
<tr>
<td class="linenos">
<div class="linenodiv">
<pre class="nl">1</pre>
</div>
</td>
<td class="code">
<div class="highlight">
<pre><span class="n">capabillities</span><span class="o">.</span><span class="na">setCapability</span><span class="o">(</span><span class="s">"screenshot"</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
</pre>
</div>
</td>
</tr>
</table>
</div>
</div>
<h3>Video</h3>
<p>Record a video of your test, which is accessible in the member area.</p>
<div class="highlight-wrapper java">
<div class="tools">
<div class="wrap">
<a href="#" class="show-raw">raw</a><a href="#" class="show-colored">highlighted</a><a href="#" class="to-clipboard">copy</a><a href="#" class="print">print</a><a href="#" class="about">?</a>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<pre class="raw"><code lang="java">
capabillities.setCapability("screenrecorder", true);
</code></pre>
<div class="highlighted">
<table class="highlighttable">
<tr>
<td class="linenos">
<div class="linenodiv">
<pre class="nl">1</pre>
</div>
</td>
<td class="code">
<div class="highlight">
<pre><span class="n">capabillities</span><span class="o">.</span><span class="na">setCapability</span><span class="o">(</span><span class="s">"screenrecorder"</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
</pre>
</div>
</td>
</tr>
</table>
</div>
</div>
<h3>Test Name</h3>
<p>Add a name to this test, which will show up in our member area.</p>
<div class="highlight-wrapper java">
<div class="tools">
<div class="wrap">
<a href="#" class="show-raw">raw</a><a href="#" class="show-colored">highlighted</a><a href="#" class="to-clipboard">copy</a><a href="#" class="print">print</a><a href="#" class="about">?</a>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<pre class="raw"><code lang="java">
capabillities.setCapability("name", "Test Script Name");
</code></pre>
<div class="highlighted">
<table class="highlighttable">
<tr>
<td class="linenos">
<div class="linenodiv">
<pre class="nl">1</pre>
</div>
</td>
<td class="code">
<div class="highlight">
<pre><span class="n">capabillities</span><span class="o">.</span><span class="na">setCapability</span><span class="o">(</span><span class="s">"name"</span><span class="o">,</span> <span class="s">"Test Script Name"</span><span class="o">);</span>
</pre>
</div>
</td>
</tr>
</table>
</div>
</div>
<h3>Custom data</h3>
<p>Send along custom data, for example your build number, release, server, commit hash, etc&#8230;</p>
<div class="highlight-wrapper java">
<div class="tools">
<div class="wrap">
<a href="#" class="show-raw">raw</a><a href="#" class="show-colored">highlighted</a><a href="#" class="to-clipboard">copy</a><a href="#" class="print">print</a><a href="#" class="about">?</a>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<pre class="raw"><code lang="java">
capabillities.setCapability("extra", "release 1.2.3");
</code></pre>
<div class="highlighted">
<table class="highlighttable">
<tr>
<td class="linenos">
<div class="linenodiv">
<pre class="nl">1</pre>
</div>
</td>
<td class="code">
<div class="highlight">
<pre><span class="n">capabillities</span><span class="o">.</span><span class="na">setCapability</span><span class="o">(</span><span class="s">"extra"</span><span class="o">,</span> <span class="s">"release 1.2.3"</span><span class="o">);</span>
</pre>
</div>
</td>
</tr>
</table>
</div>
</div>
<p>The post <a href="http://selenium.polteq.com/en/run-your-selenium-tests-in-the-cloud-with-testingbot/">Run your Selenium tests in the cloud with TestingBot</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://selenium.polteq.com/en/run-your-selenium-tests-in-the-cloud-with-testingbot/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Use custom prioritizer for Selenium Grid Hub</title>
		<link>http://selenium.polteq.com/en/use-custom-prioritizer-for-selenium-grid-hub/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=use-custom-prioritizer-for-selelenium-grid-hub</link>
		<comments>http://selenium.polteq.com/en/use-custom-prioritizer-for-selenium-grid-hub/#comments</comments>
		<pubDate>Mon, 14 May 2012 08:29:35 +0000</pubDate>
		<dc:creator>Roy de Kleijn</dc:creator>
				<category><![CDATA[Selenium Grid 2]]></category>

		<guid isPermaLink="false">http://selenium.polteq.com/?p=833</guid>
		<description><![CDATA[<p>Problem Imagine all the development/QA/CI machines will push their test scripts to the HUB. They will be queued and executed according to the FIFO principles (First In &#8211; First Out). But also the Continuous Integration (CI) environment will push the &#8230; <a href="http://selenium.polteq.com/en/use-custom-prioritizer-for-selenium-grid-hub/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://selenium.polteq.com/en/use-custom-prioritizer-for-selenium-grid-hub/">Use custom prioritizer for Selenium Grid Hub</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></description>
				<content:encoded><![CDATA[<h1>Problem</h1>
<p>Imagine all the development/QA/CI machines will push their test scripts to the HUB. They will be queued and executed according to the FIFO principles (First In &#8211; First Out).</p>
<p>But also the Continuous Integration (CI) environment will push the test scripts to the HUB. Although they have a higher priority (because we want to keep the feedback cycle as short as possible), they will be queued according to the same principles. We can implement the code described in this recipes to make an distinction based on priority.</p>
<h1>Solution</h1>
<ol>
<li>Create the prioritizer</li>
<li>Create a config file (hub.<span class="domtooltips">json<span class="domtooltips_tooltip" style="display: none">JavaScript Object Notation</span></span>)</li>
<li>Launch the HUB with the custom prioritizer</li>
<li>Modify the test scripts</li>
</ol>
<h2>Create the prioritizer</h2>
<div class="highlight-wrapper java">
<div class="tools">
<div class="wrap">
<a href="#" class="show-raw">raw</a><a href="#" class="show-colored">highlighted</a><a href="#" class="to-clipboard">copy</a><a href="#" class="print">print</a><a href="#" class="about">?</a>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<pre class="raw"><code lang="java">
import java.util.Map;

import org.openqa.grid.internal.listeners.Prioritizer;

public class CustomPrioritizer implements Prioritizer {

    public int compareTo(Map&lt;String, Object&gt; a, Map&lt;String, Object&gt; b) {
        boolean aImportant = a.get("_important") == null ? false : Boolean
                .parseBoolean(a.get("_important").toString());
        boolean bImportant = b.get("_important") == null ? false : Boolean
                .parseBoolean(b.get("_important").toString());
        if (aImportant == bImportant) {
            return 0;
        }
        if (aImportant &amp;&amp; !bImportant) {
            return -1;
        } else {
            return 1;
        }
    }
}
</code></pre>
<div class="highlighted">
<table class="highlighttable">
<tr>
<td class="linenos">
<div class="linenodiv">
<pre class="nl"> 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21</pre>
</div>
</td>
<td class="code">
<div class="highlight">
<pre><span class="kn">import</span> <span class="nn">java.util.Map</span><span class="o">;</span>

<span class="kn">import</span> <span class="nn">org.openqa.grid.internal.listeners.Prioritizer</span><span class="o">;</span>

<span class="kd">public</span> <span class="kd">class</span> <span class="nc">CustomPrioritizer</span> <span class="kd">implements</span> <span class="n">Prioritizer</span> <span class="o">{</span>

    <span class="kd">public</span> <span class="kt">int</span> <span class="nf">compareTo</span><span class="o">(</span><span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Object</span><span class="o">&gt;</span> <span class="n">a</span><span class="o">,</span> <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Object</span><span class="o">&gt;</span> <span class="n">b</span><span class="o">)</span> <span class="o">{</span>
        <span class="kt">boolean</span> <span class="n">aImportant</span> <span class="o">=</span> <span class="n">a</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="s">"_important"</span><span class="o">)</span> <span class="o">==</span> <span class="kc">null</span> <span class="o">?</span> <span class="kc">false</span> <span class="o">:</span> <span class="n">Boolean</span>
                <span class="o">.</span><span class="na">parseBoolean</span><span class="o">(</span><span class="n">a</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="s">"_important"</span><span class="o">).</span><span class="na">toString</span><span class="o">());</span>
        <span class="kt">boolean</span> <span class="n">bImportant</span> <span class="o">=</span> <span class="n">b</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="s">"_important"</span><span class="o">)</span> <span class="o">==</span> <span class="kc">null</span> <span class="o">?</span> <span class="kc">false</span> <span class="o">:</span> <span class="n">Boolean</span>
                <span class="o">.</span><span class="na">parseBoolean</span><span class="o">(</span><span class="n">b</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="s">"_important"</span><span class="o">).</span><span class="na">toString</span><span class="o">());</span>
        <span class="k">if</span> <span class="o">(</span><span class="n">aImportant</span> <span class="o">==</span> <span class="n">bImportant</span><span class="o">)</span> <span class="o">{</span>
            <span class="k">return</span> <span class="mi">0</span><span class="o">;</span>
        <span class="o">}</span>
        <span class="k">if</span> <span class="o">(</span><span class="n">aImportant</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">bImportant</span><span class="o">)</span> <span class="o">{</span>
            <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="o">;</span>
        <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
            <span class="k">return</span> <span class="mi">1</span><span class="o">;</span>
        <span class="o">}</span>
    <span class="o">}</span>
<span class="o">}</span>
</pre>
</div>
</td>
</tr>
</table>
</div>
</div>
<h2>Create a config file (hub.<span class="domtooltips">json<span class="domtooltips_tooltip" style="display: none">JavaScript Object Notation</span></span>)</h2>
<div class="highlight-wrapper java">
<div class="tools">
<div class="wrap">
<a href="#" class="show-raw">raw</a><a href="#" class="show-colored">highlighted</a><a href="#" class="to-clipboard">copy</a><a href="#" class="print">print</a><a href="#" class="about">?</a>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<pre class="raw"><code lang="java">
{
  "host": null,
  "port": 4444,
  "newSessionWaitTimeout": -1,
  "servlets" : [],
  "prioritizer": myPriotizer.customPrioritizer,
  "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
  "throwOnCapabilityNotPresent": true,
  "nodePolling": 5000,

  "cleanUpCycle": 5000,
  "timeout": 300000,
  "maxSession": 20
}
</code></pre>
<div class="highlighted">
<table class="highlighttable">
<tr>
<td class="linenos">
<div class="linenodiv">
<pre class="nl"> 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14</pre>
</div>
</td>
<td class="code">
<div class="highlight">
<pre><span class="o">{</span>
  <span class="s">"host"</span><span class="o">:</span> <span class="kc">null</span><span class="o">,</span>
  <span class="s">"port"</span><span class="o">:</span> <span class="mi">4444</span><span class="o">,</span>
  <span class="s">"newSessionWaitTimeout"</span><span class="o">:</span> <span class="o">-</span><span class="mi">1</span><span class="o">,</span>
  <span class="s">"servlets"</span> <span class="o">:</span> <span class="o">[],</span>
  <span class="s">"prioritizer"</span><span class="o">:</span> <span class="n">myPriotizer</span><span class="o">.</span><span class="na">customPrioritizer</span><span class="o">,</span>
  <span class="s">"capabilityMatcher"</span><span class="o">:</span> <span class="s">"org.openqa.grid.internal.utils.DefaultCapabilityMatcher"</span><span class="o">,</span>
  <span class="s">"throwOnCapabilityNotPresent"</span><span class="o">:</span> <span class="kc">true</span><span class="o">,</span>
  <span class="s">"nodePolling"</span><span class="o">:</span> <span class="mi">5000</span><span class="o">,</span>

  <span class="s">"cleanUpCycle"</span><span class="o">:</span> <span class="mi">5000</span><span class="o">,</span>
  <span class="s">"timeout"</span><span class="o">:</span> <span class="mi">300000</span><span class="o">,</span>
  <span class="s">"maxSession"</span><span class="o">:</span> <span class="mi">20</span>
<span class="o">}</span>
</pre>
</div>
</td>
</tr>
</table>
</div>
</div>
<h2>Launch the HUB with the custom prioritizer</h2>
<div class="highlight-wrapper bash">
<div class="tools">
<div class="wrap">
<a href="#" class="show-raw">raw</a><a href="#" class="show-colored">highlighted</a><a href="#" class="to-clipboard">copy</a><a href="#" class="print">print</a><a href="#" class="about">?</a>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<pre class="raw"><code lang="bash">
java -cp selenium-server-standalone-&lt;version&gt;.jar:prioritizer.jar org.openqa.grid.selenium.GridLauncher -role hub -hubConfig hub.<span class="domtooltips">json<span class="domtooltips_tooltip" style="display: none">JavaScript Object Notation</span></span>
</code></pre>
<div class="highlighted">
<table class="highlighttable">
<tr>
<td class="linenos">
<div class="linenodiv">
<pre class="nl">1</pre>
</div>
</td>
<td class="code">
<div class="highlight">
<pre>java -cp selenium-server-standalone-&lt;version&gt;.jar:prioritizer.jar org.openqa.grid.selenium.GridLauncher -role hub -hubConfig hub.<span class="domtooltips">json<span class="domtooltips_tooltip" style="display: none">JavaScript Object Notation</span></span>
</pre>
</div>
</td>
</tr>
</table>
</div>
</div>
<h2>Modify the test scripts</h2>
<div class="highlight-wrapper java">
<div class="tools">
<div class="wrap">
<a href="#" class="show-raw">raw</a><a href="#" class="show-colored">highlighted</a><a href="#" class="to-clipboard">copy</a><a href="#" class="print">print</a><a href="#" class="about">?</a>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<pre class="raw"><code lang="java">
import java.net.MalformedURLException;
import java.net.URL;

import org.openqa.selenium.By;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.Assert;
import org.testng.annotations.Test;

public class PrioritizerExample {
    
    @Test
    public void importantTest() throws MalformedURLException {
        DesiredCapabilities capability = DesiredCapabilities.firefox();
        capability.setCapability("_important", true);
        
        RemoteWebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);
        driver.get("http://selenium.polteq.com/prestashop/");
        
        driver.findElement(By.cssSelector("input#search_query_top")).sendKeys("ipod nano");
        driver.findElement(By.cssSelector("input[name='submit_search']")).click();
        String searchHeader = driver.findElement(By.cssSelector("H1")).getText().toLowerCase();
        
        Assert.assertTrue(searchHeader.contains("ipod nano"));
        
        driver.close();
        driver.quit();
    }
    
    @Test
    public void lessImportantTest() throws MalformedURLException {
        DesiredCapabilities capability = DesiredCapabilities.firefox();
        capability.setCapability("_important", false);
        
        RemoteWebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);
        driver.get("http://selenium.polteq.com/prestashop/");
        
        driver.findElement(By.cssSelector("input#search_query_top")).sendKeys("ipod nano");
        driver.findElement(By.cssSelector("input[name='submit_search']")).click();
        String searchHeader = driver.findElement(By.cssSelector("H1")).getText().toLowerCase();
        
        Assert.assertTrue(searchHeader.contains("ipod nano"));
        
        driver.close();
        driver.quit();
    }

}
</code></pre>
<div class="highlighted">
<table class="highlighttable">
<tr>
<td class="linenos">
<div class="linenodiv">
<pre class="nl"> 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48</pre>
</div>
</td>
<td class="code">
<div class="highlight">
<pre><span class="kn">import</span> <span class="nn">java.net.MalformedURLException</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">java.net.URL</span><span class="o">;</span>

<span class="kn">import</span> <span class="nn">org.openqa.selenium.By</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.openqa.selenium.remote.DesiredCapabilities</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.openqa.selenium.remote.RemoteWebDriver</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.testng.Assert</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.testng.annotations.Test</span><span class="o">;</span>

<span class="kd">public</span> <span class="kd">class</span> <span class="nc">PrioritizerExample</span> <span class="o">{</span>
    
    <span class="nd">@Test</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">importantTest</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">MalformedURLException</span> <span class="o">{</span>
        <span class="n">DesiredCapabilities</span> <span class="n">capability</span> <span class="o">=</span> <span class="n">DesiredCapabilities</span><span class="o">.</span><span class="na">firefox</span><span class="o">();</span>
        <span class="n">capability</span><span class="o">.</span><span class="na">setCapability</span><span class="o">(</span><span class="s">"_important"</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
        
        <span class="n">RemoteWebDriver</span> <span class="n">driver</span> <span class="o">=</span> <span class="k">new</span> <span class="n">RemoteWebDriver</span><span class="o">(</span><span class="k">new</span> <span class="n">URL</span><span class="o">(</span><span class="s">"http://localhost:4444/wd/hub"</span><span class="o">),</span> <span class="n">capability</span><span class="o">);</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="s">"http://selenium.polteq.com/prestashop/"</span><span class="o">);</span>
        
        <span class="n">driver</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">By</span><span class="o">.</span><span class="na">cssSelector</span><span class="o">(</span><span class="s">"input#search_query_top"</span><span class="o">)).</span><span class="na">sendKeys</span><span class="o">(</span><span class="s">"ipod nano"</span><span class="o">);</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">By</span><span class="o">.</span><span class="na">cssSelector</span><span class="o">(</span><span class="s">"input[name='submit_search']"</span><span class="o">)).</span><span class="na">click</span><span class="o">();</span>
        <span class="n">String</span> <span class="n">searchHeader</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">By</span><span class="o">.</span><span class="na">cssSelector</span><span class="o">(</span><span class="s">"H1"</span><span class="o">)).</span><span class="na">getText</span><span class="o">().</span><span class="na">toLowerCase</span><span class="o">();</span>
        
        <span class="n">Assert</span><span class="o">.</span><span class="na">assertTrue</span><span class="o">(</span><span class="n">searchHeader</span><span class="o">.</span><span class="na">contains</span><span class="o">(</span><span class="s">"ipod nano"</span><span class="o">));</span>
        
        <span class="n">driver</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">quit</span><span class="o">();</span>
    <span class="o">}</span>
    
    <span class="nd">@Test</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">lessImportantTest</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">MalformedURLException</span> <span class="o">{</span>
        <span class="n">DesiredCapabilities</span> <span class="n">capability</span> <span class="o">=</span> <span class="n">DesiredCapabilities</span><span class="o">.</span><span class="na">firefox</span><span class="o">();</span>
        <span class="n">capability</span><span class="o">.</span><span class="na">setCapability</span><span class="o">(</span><span class="s">"_important"</span><span class="o">,</span> <span class="kc">false</span><span class="o">);</span>
        
        <span class="n">RemoteWebDriver</span> <span class="n">driver</span> <span class="o">=</span> <span class="k">new</span> <span class="n">RemoteWebDriver</span><span class="o">(</span><span class="k">new</span> <span class="n">URL</span><span class="o">(</span><span class="s">"http://localhost:4444/wd/hub"</span><span class="o">),</span> <span class="n">capability</span><span class="o">);</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="s">"http://selenium.polteq.com/prestashop/"</span><span class="o">);</span>
        
        <span class="n">driver</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">By</span><span class="o">.</span><span class="na">cssSelector</span><span class="o">(</span><span class="s">"input#search_query_top"</span><span class="o">)).</span><span class="na">sendKeys</span><span class="o">(</span><span class="s">"ipod nano"</span><span class="o">);</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">By</span><span class="o">.</span><span class="na">cssSelector</span><span class="o">(</span><span class="s">"input[name='submit_search']"</span><span class="o">)).</span><span class="na">click</span><span class="o">();</span>
        <span class="n">String</span> <span class="n">searchHeader</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">By</span><span class="o">.</span><span class="na">cssSelector</span><span class="o">(</span><span class="s">"H1"</span><span class="o">)).</span><span class="na">getText</span><span class="o">().</span><span class="na">toLowerCase</span><span class="o">();</span>
        
        <span class="n">Assert</span><span class="o">.</span><span class="na">assertTrue</span><span class="o">(</span><span class="n">searchHeader</span><span class="o">.</span><span class="na">contains</span><span class="o">(</span><span class="s">"ipod nano"</span><span class="o">));</span>
        
        <span class="n">driver</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">quit</span><span class="o">();</span>
    <span class="o">}</span>

<span class="o">}</span>
</pre>
</div>
</td>
</tr>
</table>
</div>
</div>
<p>The post <a href="http://selenium.polteq.com/en/use-custom-prioritizer-for-selenium-grid-hub/">Use custom prioritizer for Selenium Grid Hub</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://selenium.polteq.com/en/use-custom-prioritizer-for-selenium-grid-hub/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Launch Selenium node with a JSON configuration file</title>
		<link>http://selenium.polteq.com/en/launch-node-with-config/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=launch-node-with-config</link>
		<comments>http://selenium.polteq.com/en/launch-node-with-config/#comments</comments>
		<pubDate>Mon, 14 May 2012 08:21:35 +0000</pubDate>
		<dc:creator>Roy de Kleijn</dc:creator>
				<category><![CDATA[Selenium Grid 2]]></category>

		<guid isPermaLink="false">http://selenium.polteq.com/?p=830</guid>
		<description><![CDATA[<p>Problem We can set parameters to the node in order to configure them. We can set for example the maximum number of concurrent tests, platform, browserName and so on. We can use those values in our tests to specify the &#8230; <a href="http://selenium.polteq.com/en/launch-node-with-config/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://selenium.polteq.com/en/launch-node-with-config/">Launch Selenium node with a JSON configuration file</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></description>
				<content:encoded><![CDATA[<h1>Problem</h1>
<p>We can set parameters to the node in order to configure them. We can set for example the maximum number of concurrent tests, platform, browserName and so on. We can use those values in our tests to specify the corresponding node.</p>
<h1>Prerequisites</h1>
<p>Open the command prompt and navigate to the directory where we put the selenium-server-standalone file.</p>
<h1>Solution</h1>
<p>We can add the -browser parameters to the command line with the following values to launch 5 FireFox 3.6 instances on Linux.</p>
<p><code>-browser browserName=firefox,version=3.6,maxInstances=5,platform=LINUX</code></p>
<h1>There is more&#8230;</h1>
<p>We can also load a <span class="domtooltips">JSON<span class="domtooltips_tooltip" style="display: none">JavaScript Object Notation</span></span> file while launching the node, instead of specifying the browser parameter on the command line. We need to add the following parameter to the test: -nodeConfig node.<span class="domtooltips">json<span class="domtooltips_tooltip" style="display: none">JavaScript Object Notation</span></span> The contents of node.<span class="domtooltips">json<span class="domtooltips_tooltip" style="display: none">JavaScript Object Notation</span></span> may look like this:</p>
<div class="highlight-wrapper javascript">
<div class="tools">
<div class="wrap">
<a href="#" class="show-raw">raw</a><a href="#" class="show-colored">highlighted</a><a href="#" class="to-clipboard">copy</a><a href="#" class="print">print</a><a href="#" class="about">?</a>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<pre class="raw"><code lang="javascript">
{
  "capabilities":
      [
        {
          "browserName": "firefox",
          "version": "3.6",
          "platform": "WINDOWS",
          "maxInstances": 1
        },
        {
          "browserName": "internet explorer",
          "version": "8",
          "platform": "WINDOWS",
          "maxInstances": 1
        }
      ],
    "configuration":
        {
        "nodeTimeout":120,
        "port":5555,

        "hubPort":4444,
        "hubHost":"localhost",

        "nodePolling":2000,

        "registerCycle":10000,
        "register":true,
        "cleanUpCycle":2000,
        "timeout":30000,
        "maxSession":1,
        }
}
</code></pre>
<div class="highlighted">
<table class="highlighttable">
<tr>
<td class="linenos">
<div class="linenodiv">
<pre class="nl"> 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33</pre>
</div>
</td>
<td class="code">
<div class="highlight">
<pre><span class="p">{</span>
  <span class="s2">"capabilities"</span><span class="o">:</span>
      <span class="p">[</span>
        <span class="p">{</span>
          <span class="s2">"browserName"</span><span class="o">:</span> <span class="s2">"firefox"</span><span class="p">,</span>
          <span class="s2">"version"</span><span class="o">:</span> <span class="s2">"3.6"</span><span class="p">,</span>
          <span class="s2">"platform"</span><span class="o">:</span> <span class="s2">"WINDOWS"</span><span class="p">,</span>
          <span class="s2">"maxInstances"</span><span class="o">:</span> <span class="mi">1</span>
        <span class="p">},</span>
        <span class="p">{</span>
          <span class="s2">"browserName"</span><span class="o">:</span> <span class="s2">"internet explorer"</span><span class="p">,</span>
          <span class="s2">"version"</span><span class="o">:</span> <span class="s2">"8"</span><span class="p">,</span>
          <span class="s2">"platform"</span><span class="o">:</span> <span class="s2">"WINDOWS"</span><span class="p">,</span>
          <span class="s2">"maxInstances"</span><span class="o">:</span> <span class="mi">1</span>
        <span class="p">}</span>
      <span class="p">],</span>
    <span class="s2">"configuration"</span><span class="o">:</span>
        <span class="p">{</span>
        <span class="s2">"nodeTimeout"</span><span class="o">:</span><span class="mi">120</span><span class="p">,</span>
        <span class="s2">"port"</span><span class="o">:</span><span class="mi">5555</span><span class="p">,</span>

        <span class="s2">"hubPort"</span><span class="o">:</span><span class="mi">4444</span><span class="p">,</span>
        <span class="s2">"hubHost"</span><span class="o">:</span><span class="s2">"localhost"</span><span class="p">,</span>

        <span class="s2">"nodePolling"</span><span class="o">:</span><span class="mi">2000</span><span class="p">,</span>

        <span class="s2">"registerCycle"</span><span class="o">:</span><span class="mi">10000</span><span class="p">,</span>
        <span class="s2">"register"</span><span class="o">:</span><span class="kc">true</span><span class="p">,</span>
        <span class="s2">"cleanUpCycle"</span><span class="o">:</span><span class="mi">2000</span><span class="p">,</span>
        <span class="s2">"timeout"</span><span class="o">:</span><span class="mi">30000</span><span class="p">,</span>
        <span class="s2">"maxSession"</span><span class="o">:</span><span class="mi">1</span><span class="p">,</span>
        <span class="p">}</span>
<span class="p">}</span>
</pre>
</div>
</td>
</tr>
</table>
</div>
</div>
<p>It makes it possible to use a firefox and Internet Explorer browser on a windows platform.</p>
<p>Command line script to start a Selenium Node with <span class="domtooltips">JSON<span class="domtooltips_tooltip" style="display: none">JavaScript Object Notation</span></span> configuration file:</p>
<p><code>java -jar selenium-server-standalone-&lt;version&gt;.jar -role node -hub http://localhost:4444/grid/register -nodeConfig defaultNodeConfig.<span class="domtooltips">json<span class="domtooltips_tooltip" style="display: none">JavaScript Object Notation</span></span></code></p>
<p>The post <a href="http://selenium.polteq.com/en/launch-node-with-config/">Launch Selenium node with a JSON configuration file</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://selenium.polteq.com/en/launch-node-with-config/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Running tests against the Grid</title>
		<link>http://selenium.polteq.com/en/running-tests-against-the-grid/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=running-tests-against-the-grid</link>
		<comments>http://selenium.polteq.com/en/running-tests-against-the-grid/#comments</comments>
		<pubDate>Mon, 14 May 2012 08:17:07 +0000</pubDate>
		<dc:creator>Roy de Kleijn</dc:creator>
				<category><![CDATA[Selenium Grid 2]]></category>

		<guid isPermaLink="false">http://selenium.polteq.com/?p=825</guid>
		<description><![CDATA[<p>Problem We have to make minor changes to the tests in order to run our tests against the Grid. This recipes will show us how we can define capabilities to match a node. Prerequisites Make sure the desired capabilities are &#8230; <a href="http://selenium.polteq.com/en/running-tests-against-the-grid/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://selenium.polteq.com/en/running-tests-against-the-grid/">Running tests against the Grid</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></description>
				<content:encoded><![CDATA[<h1>Problem</h1>
<p>We have to make minor changes to the tests in order to run our tests against the Grid. This recipes will show us how we can define capabilities to match a node.</p>
<h1>Prerequisites</h1>
<p>Make sure the desired capabilities are in the Grid otherwise the test can not be routed to the node.</p>
<h1>Solution</h1>
<p>The code below will match the following nodes: browserName=firefox,version=3.6,platform=LINUX</p>
<div class="highlight-wrapper java">
<div class="tools">
<div class="wrap">
<a href="#" class="show-raw">raw</a><a href="#" class="show-colored">highlighted</a><a href="#" class="to-clipboard">copy</a><a href="#" class="print">print</a><a href="#" class="about">?</a>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<pre class="raw"><code lang="java">
import java.net.MalformedURLException;
import java.net.URL;

import org.openqa.selenium.By;
import org.openqa.selenium.Platform;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class GridExample {
    private static RemoteWebDriver driver;
    
    @BeforeClass
    public void setUp() throws MalformedURLException {
        DesiredCapabilities capability = DesiredCapabilities.firefox();
        capability.setBrowserName("firefox");
        capability.setPlatform(Platform.LINUX);
        capability.setVersion("3.6");
        driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);
        driver.get("http://selenium.polteq.com/prestashop/");
    }
    
    @Test
    public void measurePerformance() {
        driver.findElement(By.cssSelector("input#search_query_top")).sendKeys("ipod nano");
        driver.findElement(By.cssSelector("input[name='submit_search']")).click();
        String searchHeader = driver.findElement(By.cssSelector("H1")).getText().toLowerCase();
        
        Assert.assertTrue(searchHeader.contains("ipod nano"));
    }
}
</code></pre>
<div class="highlighted">
<table class="highlighttable">
<tr>
<td class="linenos">
<div class="linenodiv">
<pre class="nl"> 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33</pre>
</div>
</td>
<td class="code">
<div class="highlight">
<pre><span class="kn">import</span> <span class="nn">java.net.MalformedURLException</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">java.net.URL</span><span class="o">;</span>

<span class="kn">import</span> <span class="nn">org.openqa.selenium.By</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.openqa.selenium.Platform</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.openqa.selenium.remote.DesiredCapabilities</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.openqa.selenium.remote.RemoteWebDriver</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.testng.Assert</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.testng.annotations.BeforeClass</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.testng.annotations.Test</span><span class="o">;</span>

<span class="kd">public</span> <span class="kd">class</span> <span class="nc">GridExample</span> <span class="o">{</span>
    <span class="kd">private</span> <span class="kd">static</span> <span class="n">RemoteWebDriver</span> <span class="n">driver</span><span class="o">;</span>
    
    <span class="nd">@BeforeClass</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">setUp</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">MalformedURLException</span> <span class="o">{</span>
        <span class="n">DesiredCapabilities</span> <span class="n">capability</span> <span class="o">=</span> <span class="n">DesiredCapabilities</span><span class="o">.</span><span class="na">firefox</span><span class="o">();</span>
        <span class="n">capability</span><span class="o">.</span><span class="na">setBrowserName</span><span class="o">(</span><span class="s">"firefox"</span><span class="o">);</span>
        <span class="n">capability</span><span class="o">.</span><span class="na">setPlatform</span><span class="o">(</span><span class="n">Platform</span><span class="o">.</span><span class="na">LINUX</span><span class="o">);</span>
        <span class="n">capability</span><span class="o">.</span><span class="na">setVersion</span><span class="o">(</span><span class="s">"3.6"</span><span class="o">);</span>
        <span class="n">driver</span> <span class="o">=</span> <span class="k">new</span> <span class="n">RemoteWebDriver</span><span class="o">(</span><span class="k">new</span> <span class="n">URL</span><span class="o">(</span><span class="s">"http://localhost:4444/wd/hub"</span><span class="o">),</span> <span class="n">capability</span><span class="o">);</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="s">"http://selenium.polteq.com/prestashop/"</span><span class="o">);</span>
    <span class="o">}</span>
    
    <span class="nd">@Test</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">measurePerformance</span><span class="o">()</span> <span class="o">{</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">By</span><span class="o">.</span><span class="na">cssSelector</span><span class="o">(</span><span class="s">"input#search_query_top"</span><span class="o">)).</span><span class="na">sendKeys</span><span class="o">(</span><span class="s">"ipod nano"</span><span class="o">);</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">By</span><span class="o">.</span><span class="na">cssSelector</span><span class="o">(</span><span class="s">"input[name='submit_search']"</span><span class="o">)).</span><span class="na">click</span><span class="o">();</span>
        <span class="n">String</span> <span class="n">searchHeader</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">By</span><span class="o">.</span><span class="na">cssSelector</span><span class="o">(</span><span class="s">"H1"</span><span class="o">)).</span><span class="na">getText</span><span class="o">().</span><span class="na">toLowerCase</span><span class="o">();</span>
        
        <span class="n">Assert</span><span class="o">.</span><span class="na">assertTrue</span><span class="o">(</span><span class="n">searchHeader</span><span class="o">.</span><span class="na">contains</span><span class="o">(</span><span class="s">"ipod nano"</span><span class="o">));</span>
    <span class="o">}</span>
<span class="o">}</span>
</pre>
</div>
</td>
</tr>
</table>
</div>
</div>
<p>The post <a href="http://selenium.polteq.com/en/running-tests-against-the-grid/">Running tests against the Grid</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://selenium.polteq.com/en/running-tests-against-the-grid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding nodes to the hub</title>
		<link>http://selenium.polteq.com/en/adding-nodes-to-the-hub/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=adding-nodes-to-the-hub</link>
		<comments>http://selenium.polteq.com/en/adding-nodes-to-the-hub/#comments</comments>
		<pubDate>Mon, 14 May 2012 08:11:47 +0000</pubDate>
		<dc:creator>Roy de Kleijn</dc:creator>
				<category><![CDATA[Selenium Grid 2]]></category>

		<guid isPermaLink="false">http://selenium.polteq.com/?p=821</guid>
		<description><![CDATA[<p>Problem We can add nodes to the Selenium Grid Hub, now the hub is up and running. This recipe will describe how to launch Selenium instances and register them to the hub so it starts forming the grid op Selenium &#8230; <a href="http://selenium.polteq.com/en/adding-nodes-to-the-hub/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://selenium.polteq.com/en/adding-nodes-to-the-hub/">Adding nodes to the hub</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></description>
				<content:encoded><![CDATA[<h1>Problem</h1>
<p>We can add nodes to the Selenium Grid Hub, now the hub is up and running. This recipe will describe how to launch Selenium instances and register them to the hub so it starts forming the grid op Selenium instances that we are expecting.</p>
<h1>Prerequisites</h1>
<p>Open the command prompt and navigate to the directory where we put the selenium-server-standalone file.</p>
<h1>Solution</h1>
<p>Enter something like the following command in the command prompt: java -jar selenium-server-standalone-<version>.jar -role node -hub http://localhost:4444/grid/register -port 5556 We should see the following output in the console: <a href="http://selenium.polteq.com/wp-content/uploads/5740_07_03.png"><img src="http://selenium.polteq.com/wp-content/uploads/5740_07_03.png" alt="" title="5740_07_03" width="779" height="580" class="alignnone size-full wp-image-815"></a></version></p>
<h1>What has been done</h1>
<p>The command above will register a node to the hub, which is fully backwards compatible with Selenium 1. We can see this node in the Hub Console: <a href="http://selenium.polteq.com/wp-content/uploads/5740_07_04.png"><img src="http://selenium.polteq.com/wp-content/uploads/5740_07_04.png" alt="" title="5740_07_04" width="631" height="249" class="alignnone size-full wp-image-816"></a></p>
<blockquote>
<p>We can add multiple operating systems to our Selenium Grid. This allows us to check, whether different versions of Firefox on different operating systems are showing the same behavior.</p>
</blockquote>
<p>The post <a href="http://selenium.polteq.com/en/adding-nodes-to-the-hub/">Adding nodes to the hub</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://selenium.polteq.com/en/adding-nodes-to-the-hub/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Launching the hub</title>
		<link>http://selenium.polteq.com/en/launching-the-hub/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=launching-the-hub</link>
		<comments>http://selenium.polteq.com/en/launching-the-hub/#comments</comments>
		<pubDate>Mon, 14 May 2012 08:02:55 +0000</pubDate>
		<dc:creator>Roy de Kleijn</dc:creator>
				<category><![CDATA[Selenium Grid 2]]></category>

		<guid isPermaLink="false">http://selenium.polteq.com/?p=811</guid>
		<description><![CDATA[<p>Problem We want to start Selenium HUB, which is the central point in the Grid that will receive all Selenium commands and route them to the right node. Prerequisites Download the latest version of selenium-server-standalone.jar from the Selenium website. (http://code.google.com/p/selenium/downloads/list) &#8230; <a href="http://selenium.polteq.com/en/launching-the-hub/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://selenium.polteq.com/en/launching-the-hub/">Launching the hub</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></description>
				<content:encoded><![CDATA[<h1>Problem</h1>
<p>We want to start Selenium HUB, which is the central point in the Grid that will receive all Selenium commands and route them to the right node.</p>
<h1>Prerequisites</h1>
<p>Download the latest version of selenium-server-standalone.jar from the Selenium website. (http://code.google.com/p/selenium/downloads/list) Open the command prompt and navigate to the directory where we put the selenium-server-standalone file.</p>
<h1>Solution</h1>
<p>Enter the following command in the command prompt to start the hub: java -jar selenium-server-standalone-<version>.jar -role hub The output in the console will look like this: <a href="http://selenium.polteq.com/wp-content/uploads/5740_07_01.png"><img src="http://selenium.polteq.com/wp-content/uploads/5740_07_01.png" alt="" title="5740_07_01" width="677" height="258" class="alignnone size-full wp-image-818"></a></version></p>
<h1>What has been done</h1>
<p>The hub will use port 4444 by default. We can see the Selenium instances that are connected to the hub and the status of the nodes if we put http://ip-of-hub:4444/grid/console in a browser window, where ip-of-hub is the name of the machine with the hub. If it is on the local machine then you can place http://localhost:4444/grid/console. We can see that in the next screenshot: <a href="http://selenium.polteq.com/wp-content/uploads/5740_07_02.png"><img src="http://selenium.polteq.com/wp-content/uploads/5740_07_02.png" alt="" title="5740_07_02" width="605" height="244" class="alignnone size-full wp-image-814"></a></p>
<blockquote>
<p>Tip: We can also specify a different port to run the hub on. We can give an extra parameter to the command, like: -port # (where # is the port-number)</p>
</blockquote>
<p>The post <a href="http://selenium.polteq.com/en/launching-the-hub/">Launching the hub</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://selenium.polteq.com/en/launching-the-hub/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Selenium Grid 2 &#8211; Introduction</title>
		<link>http://selenium.polteq.com/en/selenium-grid-2-introduction/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=selenium-grid-2-introduction</link>
		<comments>http://selenium.polteq.com/en/selenium-grid-2-introduction/#comments</comments>
		<pubDate>Mon, 14 May 2012 08:01:04 +0000</pubDate>
		<dc:creator>Roy de Kleijn</dc:creator>
				<category><![CDATA[Selenium Grid 2]]></category>

		<guid isPermaLink="false">http://selenium.polteq.com/?p=808</guid>
		<description><![CDATA[<p>Selenium Grid allows us to have multiple Selenium instances on multiple machines and then have one point to send Selenium commands to. We can specify the operating system / browser and browser version where we want to run the test &#8230; <a href="http://selenium.polteq.com/en/selenium-grid-2-introduction/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://selenium.polteq.com/en/selenium-grid-2-introduction/">Selenium Grid 2 &#8211; Introduction</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>
Selenium Grid allows us to have multiple Selenium instances on multiple machines and then have one point to send Selenium commands to. We can specify the operating system / browser and browser version where we want to run the test on. The hub which is the central point of the Grid will route all the Selenium command to the requested node.</p>
<p>In this section of the blog we will see how to set up Selenium Grid and how to make use of some common properties.
</p></p>
<p>The post <a href="http://selenium.polteq.com/en/selenium-grid-2-introduction/">Selenium Grid 2 &#8211; Introduction</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://selenium.polteq.com/en/selenium-grid-2-introduction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Running tests on an Android simulator</title>
		<link>http://selenium.polteq.com/en/running-tests-on-an-android-simulator/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=running-tests-on-an-android-simulator</link>
		<comments>http://selenium.polteq.com/en/running-tests-on-an-android-simulator/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 15:40:23 +0000</pubDate>
		<dc:creator>Roy de Kleijn</dc:creator>
				<category><![CDATA[Testing on Mobile Browsers]]></category>

		<guid isPermaLink="false">http://selenium.polteq.com/?p=690</guid>
		<description><![CDATA[<p>Problem The android driver allows us to execute our tests against an Android browser. This can be a simulator or a real device. This recipe will walk us through the steps we have to do to run our tests in &#8230; <a href="http://selenium.polteq.com/en/running-tests-on-an-android-simulator/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://selenium.polteq.com/en/running-tests-on-an-android-simulator/">Running tests on an Android simulator</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></description>
				<content:encoded><![CDATA[<h1>Problem</h1>
<p>The android driver allows us to execute our tests against an Android browser. This can be a simulator or a real device. This recipe will walk us through the steps we have to do to run our tests in a simulator.</p>
<h1>Prerequisites</h1>
<p>Before we can register our simulator we have to download the android SDK (Software Development Kit) from the following location: <a href="http://developer.android.com/sdk/" title="http://developer.android.com/sdk/" target="_blank">http://developer.android.com/sdk/</a></p>
<h1>Solution</h1>
<p>We can divide this section into three parts: setup the emulator, install the WebDriver APK and finally run the test.</p>
<p><strong>Setup the emulator</strong></p>
<p>Navigate to the tools directory and create an Android Virtual Device.</p>
<div class="highlight-wrapper console">
<div class="tools">
<div class="wrap">
<a href="#" class="show-raw">raw</a><a href="#" class="show-colored">highlighted</a><a href="#" class="to-clipboard">copy</a><a href="#" class="print">print</a><a href="#" class="about">?</a>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<pre class="raw"><code lang="console">
$cd ~/android_sdk/tools/
$./android create avd -n my_android -t 12 -c 100M
</code></pre>
<div class="highlighted">
<table class="highlighttable">
<tr>
<td class="linenos">
<div class="linenodiv">
<pre class="nl">1
2</pre>
</div>
</td>
<td class="code">
<div class="highlight">
<pre><span class="gp">$</span><span class="nb">cd</span> ~/android_sdk/tools/
<span class="gp">$</span>./android create avd -n my_android -t 12 -c 100M
</pre>
</div>
</td>
</tr>
</table>
</div>
</div>
<blockquote>
<p>-n: specifies the name of the AVD -t: specifies the platform target -c: specifies the SD card storage space</p>
</blockquote>
<p>We can list the targets with the following command to check if the creation succeeded:</p>
<p><code>./android list targets</code></p>
<p>Finally we can start the emulator with the following command:</p>
<p><code>$./emulator -avd my_android &amp;</code></p>
<p><strong>Install the WebDriver APK</strong></p>
<ol>
<li>We need to retrieve the serial id with the following command: <code>/android_sdk/platform-tools/adb devices</code>
</li>
<li>Download the Android server from <a href="http://code.google.com/p/selenium/downloads/list" title="http://code.google.com/p/selenium/downloads/list" target="_blank">http://code.google.com/p/selenium/downloads/list</a> and save it in the platform-tools directory. To install the application enter: <code>$./adb -s &lt;serialId&gt; -e install -r android-server.apk</code> </li>
<li>Start the Android WebDriver application,by running this command: <code>$./adb -s &lt;serialId&gt; shell am start -a android.intent.action.MAIN -n org.openqa.selenium.android.app/.MainActivity</code> </li>
<li>Now we need to setup the port forwarding in order to forward traffic from the host machine to the emulator. Enter the following in the terminal: <code>$./adb -s &lt;serialId&gt; forward tcp:8080 tcp:8080</code>
</li>
</ol>
<p><strong>Run the test</strong></p>
<p>Now we have our environment setup we can run our tests. The test will look like this:</p>
<div class="highlight-wrapper java">
<div class="tools">
<div class="wrap">
<a href="#" class="show-raw">raw</a><a href="#" class="show-colored">highlighted</a><a href="#" class="to-clipboard">copy</a><a href="#" class="print">print</a><a href="#" class="about">?</a>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<pre class="raw"><code lang="java">
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.android.AndroidDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class MobileAndroidDevice {
    private static WebDriver driver;
    
    @BeforeClass
    public void setUp() throws Exception {
        driver = new AndroidDriver();
        driver.get("http://selenium.polteq.com/prestashop/");
    }
    
    @AfterClass
    public void tearDown() {
        driver.close();
        driver.quit();
    }
    
    @Test
    public void measurePerformance() throws InterruptedException {
        Thread.sleep(1500);
        driver.findElement(By.cssSelector("input#search_query_top")).sendKeys("ipod nano");
        driver.findElement(By.cssSelector("input[name='submit_search']")).click();
        String searchHeader = driver.findElement(By.cssSelector("H1")).getText().toLowerCase();
            
        Assert.assertTrue(searchHeader.contains("ipod nano"));
    }
}
</code></pre>
<div class="highlighted">
<table class="highlighttable">
<tr>
<td class="linenos">
<div class="linenodiv">
<pre class="nl"> 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33</pre>
</div>
</td>
<td class="code">
<div class="highlight">
<pre><span class="kn">import</span> <span class="nn">org.openqa.selenium.By</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.openqa.selenium.WebDriver</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.openqa.selenium.android.AndroidDriver</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.testng.Assert</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.testng.annotations.AfterClass</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.testng.annotations.BeforeClass</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.testng.annotations.Test</span><span class="o">;</span>

<span class="kd">public</span> <span class="kd">class</span> <span class="nc">MobileAndroidDevice</span> <span class="o">{</span>
    <span class="kd">private</span> <span class="kd">static</span> <span class="n">WebDriver</span> <span class="n">driver</span><span class="o">;</span>
    
    <span class="nd">@BeforeClass</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">setUp</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
        <span class="n">driver</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AndroidDriver</span><span class="o">();</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="s">"http://selenium.polteq.com/prestashop/"</span><span class="o">);</span>
    <span class="o">}</span>
    
    <span class="nd">@AfterClass</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">tearDown</span><span class="o">()</span> <span class="o">{</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">quit</span><span class="o">();</span>
    <span class="o">}</span>
    
    <span class="nd">@Test</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">measurePerformance</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">InterruptedException</span> <span class="o">{</span>
        <span class="n">Thread</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="mi">1500</span><span class="o">);</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">By</span><span class="o">.</span><span class="na">cssSelector</span><span class="o">(</span><span class="s">"input#search_query_top"</span><span class="o">)).</span><span class="na">sendKeys</span><span class="o">(</span><span class="s">"ipod nano"</span><span class="o">);</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">By</span><span class="o">.</span><span class="na">cssSelector</span><span class="o">(</span><span class="s">"input[name='submit_search']"</span><span class="o">)).</span><span class="na">click</span><span class="o">();</span>
        <span class="n">String</span> <span class="n">searchHeader</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">By</span><span class="o">.</span><span class="na">cssSelector</span><span class="o">(</span><span class="s">"H1"</span><span class="o">)).</span><span class="na">getText</span><span class="o">().</span><span class="na">toLowerCase</span><span class="o">();</span>
            
        <span class="n">Assert</span><span class="o">.</span><span class="na">assertTrue</span><span class="o">(</span><span class="n">searchHeader</span><span class="o">.</span><span class="na">contains</span><span class="o">(</span><span class="s">"ipod nano"</span><span class="o">));</span>
    <span class="o">}</span>
<span class="o">}</span>
</pre>
</div>
</td>
</tr>
</table>
</div>
</div>
<p>The post <a href="http://selenium.polteq.com/en/running-tests-on-an-android-simulator/">Running tests on an Android simulator</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://selenium.polteq.com/en/running-tests-on-an-android-simulator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Running tests on a real Android device</title>
		<link>http://selenium.polteq.com/en/running-tests-on-a-real-android-device-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=running-tests-on-a-real-android-device-2</link>
		<comments>http://selenium.polteq.com/en/running-tests-on-a-real-android-device-2/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 15:12:37 +0000</pubDate>
		<dc:creator>Roy de Kleijn</dc:creator>
				<category><![CDATA[Testing on Mobile Browsers]]></category>

		<guid isPermaLink="false">http://selenium.polteq.com/?p=665</guid>
		<description><![CDATA[<p>Problem We want to run our testscripts on a real Android device. The android driver allows us to execute our tests against an Android browser. This can be a simulator or a real device. Prerequisites Before we can register our &#8230; <a href="http://selenium.polteq.com/en/running-tests-on-a-real-android-device-2/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://selenium.polteq.com/en/running-tests-on-a-real-android-device-2/">Running tests on a real Android device</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></description>
				<content:encoded><![CDATA[<h1>Problem</h1>
<p>We want to run our testscripts on a real Android device. The android driver allows us to execute our tests against an Android browser. This can be a simulator or a real device.</p>
<h1>Prerequisites</h1>
<p>Before we can register our device we have to download the android SDK (Software Development Kit) from the following location: <a href="http://developer.android.com/sdk/" title="http://developer.android.com/sdk/" target="_blank">http://developer.android.com/sdk/</a></p>
<h1>Solution</h1>
<p>We can divide this section into three parts: setup the device, install the WebDriver APK and finally run the test.</p>
<p><strong>Setup the device</strong></p>
<p>Connect the android device with the computer using a USB cable.</p>
<p><strong>Install the WebDriver APK</strong></p>
<ol>
<li>We need to retrieve the serial id with the following command: <code>/android_sdk/platform-tools/adb devices</code>
</li>
<li>Download the Android server from <a href="http://code.google.com/p/selenium/downloads/list" title="http://code.google.com/p/selenium/downloads/list" target="_blank">http://code.google.com/p/selenium/downloads/list</a> and save it in the platform-tools directory. To install the application enter: <code>$./adb -s &lt;serialId&gt; -e install -r android-server.apk</code> </li>
<li>Start the Android WebDriver application,by running this command: <code>$./adb -s &lt;serialId&gt; shell am start -a android.intent.action.MAIN -n org.openqa.selenium.android.app/.MainActivity</code> </li>
<li>Now we need to setup the port forwarding in order to forward traffic from the host machine to the emulator. Enter the following in the terminal: <code>$./adb -s &lt;serialId&gt; forward tcp:8080 tcp:8080</code>
</li>
</ol>
<p><strong>Run the test</strong></p>
<p>Now we have our environment setup we can run our tests. The test will look like this:</p>
<div class="highlight-wrapper java">
<div class="tools">
<div class="wrap">
<a href="#" class="show-raw">raw</a><a href="#" class="show-colored">highlighted</a><a href="#" class="to-clipboard">copy</a><a href="#" class="print">print</a><a href="#" class="about">?</a>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<pre class="raw"><code lang="java">
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.android.AndroidDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class MobileAndroidDevice {
    private static WebDriver driver;
    
    @BeforeClass
    public void setUp() throws Exception {
        driver = new AndroidDriver();
        driver.get("http://selenium.polteq.com/prestashop/");
    }
    
    @AfterClass
    public void tearDown() {
        driver.close();
        driver.quit();
    }
    
    @Test
    public void measurePerformance() throws InterruptedException {
        Thread.sleep(1500);
        driver.findElement(By.cssSelector("input#search_query_top")).sendKeys("ipod nano");
        driver.findElement(By.cssSelector("input[name='submit_search']")).click();
        String searchHeader = driver.findElement(By.cssSelector("H1")).getText().toLowerCase();
            
        Assert.assertTrue(searchHeader.contains("ipod nano"));
    }
}
</code></pre>
<div class="highlighted">
<table class="highlighttable">
<tr>
<td class="linenos">
<div class="linenodiv">
<pre class="nl"> 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33</pre>
</div>
</td>
<td class="code">
<div class="highlight">
<pre><span class="kn">import</span> <span class="nn">org.openqa.selenium.By</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.openqa.selenium.WebDriver</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.openqa.selenium.android.AndroidDriver</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.testng.Assert</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.testng.annotations.AfterClass</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.testng.annotations.BeforeClass</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.testng.annotations.Test</span><span class="o">;</span>

<span class="kd">public</span> <span class="kd">class</span> <span class="nc">MobileAndroidDevice</span> <span class="o">{</span>
    <span class="kd">private</span> <span class="kd">static</span> <span class="n">WebDriver</span> <span class="n">driver</span><span class="o">;</span>
    
    <span class="nd">@BeforeClass</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">setUp</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
        <span class="n">driver</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AndroidDriver</span><span class="o">();</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="s">"http://selenium.polteq.com/prestashop/"</span><span class="o">);</span>
    <span class="o">}</span>
    
    <span class="nd">@AfterClass</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">tearDown</span><span class="o">()</span> <span class="o">{</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">quit</span><span class="o">();</span>
    <span class="o">}</span>
    
    <span class="nd">@Test</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">measurePerformance</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">InterruptedException</span> <span class="o">{</span>
        <span class="n">Thread</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="mi">1500</span><span class="o">);</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">By</span><span class="o">.</span><span class="na">cssSelector</span><span class="o">(</span><span class="s">"input#search_query_top"</span><span class="o">)).</span><span class="na">sendKeys</span><span class="o">(</span><span class="s">"ipod nano"</span><span class="o">);</span>
        <span class="n">driver</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">By</span><span class="o">.</span><span class="na">cssSelector</span><span class="o">(</span><span class="s">"input[name='submit_search']"</span><span class="o">)).</span><span class="na">click</span><span class="o">();</span>
        <span class="n">String</span> <span class="n">searchHeader</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">By</span><span class="o">.</span><span class="na">cssSelector</span><span class="o">(</span><span class="s">"H1"</span><span class="o">)).</span><span class="na">getText</span><span class="o">().</span><span class="na">toLowerCase</span><span class="o">();</span>
            
        <span class="n">Assert</span><span class="o">.</span><span class="na">assertTrue</span><span class="o">(</span><span class="n">searchHeader</span><span class="o">.</span><span class="na">contains</span><span class="o">(</span><span class="s">"ipod nano"</span><span class="o">));</span>
    <span class="o">}</span>
<span class="o">}</span>
</pre>
</div>
</td>
</tr>
</table>
</div>
</div>
<p>The post <a href="http://selenium.polteq.com/en/running-tests-on-a-real-android-device-2/">Running tests on a real Android device</a> appeared first on <a href="http://selenium.polteq.com/en">Selenium WebDriver</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://selenium.polteq.com/en/running-tests-on-a-real-android-device-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
