Reputation: 101
How do I test which element has the focus in Selenium RC?
Upvotes: 4
Views: 13237
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
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
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
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