Reputation: 62789
I would like for Selenium to navigate a menu via arrow keys--Starting with clicking the top menu item then pressing "DOWN", "DOWN", ...
The problem is that you have to always supply a specific element to send the "DOWN" to.
Is there any way to get the current element?
I tried:
by.xpath(".")
but it said that the expression was unrecognized or didn't return a proper object.
I expect I'm jsut missing some stupid trick.
Upvotes: 25
Views: 59363
Reputation: 23642
In Ruby/Capybara:
page.driver.browser.switch_to.active_element
Note that this returns a Selenium::WebDriver::Element
not a Capybara::Node::Element
.
Upvotes: 1
Reputation: 76729
In Selenium 2.0, if you are using WebDriver
to drive the tests in the browser, you can use the WebDriver.TargetLocator
class to get the element in focus, in a window/frame:
WebDriver driver = ... // initialize the driver
WebElement currentElement = driver.switchTo().activeElement();
If no element is in focus, the active element would turn out to be the body
of the document being displayed, which might be the case when you launch a new page, for instance. When you invoke methods like click
, sendKeys
etc. you'll find the WebElement
returned by the above invocation will always represent the element in focus.
This was tested using FirefoxDriver
, and I would suspect that the same would be true of other drivers, except for the HtmlUnitDriver
and similar drivers that do not use a full-fledged browser under the hood.
Upvotes: 41
Reputation: 12816
Don't know of a more straightforward way than accessing document.activeElement
How do I test which element has the focus in Selenium RC?
Upvotes: 8