david-shang
david-shang

Reputation: 101

How do I test which element has the focus in Selenium RC?

How do I test which element has the focus in Selenium RC?

Upvotes: 4

Views: 13237

Answers (4)

david-shang
david-shang

Reputation: 101

source code:

<div class="box_container">
    <input type="text" value="" name="to_hidden" id="to:12982f12165_hidden" class="left_to_right" autocomplete="off" style="display: none;">
    <textarea id="to:12982f12165" name="to" style="overflow: hidden; height: 18px;" class="left_to_right" autocomplete="OFF">
    
    </textarea>
</div>

selenium code: 1 method:

String searchValue=selenium.getEval("var test=document.activeElement;");

2 method:

String testvalue=selenium.getText("css=#div textarea[class='left_to_right']:focus");    

Upvotes: 0

Matthew O&#39;Riordan
Matthew O&#39;Riordan

Reputation: 8211

Another way to test (assuming you are using JQuery or Sizzle) is to use a simple library I wrote which allows Selenium tests to query the DOM using the :focus selector such as .is(':focus') or $(':focus').

For more information, see http://blog.mattheworiordan.com/post/9308775285/testing-focus-with-jquery-and-selenium-or where I explain the reason why Selenium test for :focus don't work out of the box, and how to fix this.

Upvotes: 2

Dave Hunt
Dave Hunt

Reputation: 8223

As AlistairH mentions, you can use document.activeElement on most current browsers. To use this in Selenium you can store the active element and compare it to the active element. Below is an example for Selenium IDE, which should point you in the right direction for Selenium RC too.

storeEval | this.browserbot.findElement("name=targetElement").id; | targetElement
storeEval | this.browserbot.getUserWindow().document.activeElement.id; | activeElement
verifyEval | '${targetElement}' | ${activeElement}

Note that the above relies on the element having a unique id assigned.

Upvotes: 3

AlistairH
AlistairH

Reputation: 3229

The following locator should select the active element in the document:

dom=document.activeElement

If a form field or similar element has focus, then it should be the active element. Hope this helps.

Upvotes: 5

Related Questions