在Selenium中如何找到“当前”对象

时间:2011-09-20 21:08:28

标签: java selenium

我希望Selenium通过箭头键导航菜单 - 点击顶部菜单项然后按“DOWN”,“DOWN”,...

问题是您必须始终提供特定元素才能将“DOWN”发送到。

有没有办法获得当前元素?

我试过了:

by.xpath(".")

但它表示该表达未被识别或未返回正确的对象。

我希望我能错过一些愚蠢的伎俩。

4 个答案:

答案 0 :(得分:32)

在Selenium 2.0中,如果您使用WebDriver在浏览器中驱动测试,则可以使用WebDriver.TargetLocator类在窗口/框架中获取焦点元素:

WebDriver driver = ... // initialize the driver
WebElement currentElement = driver.switchTo().activeElement();

如果没有元素处于焦点,则活动元素将成为正在显示的文档的body,例如,当您启动新页面时可能就是这种情况。当您调用clicksendKeys等方法时,您会发现上述调用返回的WebElement将始终代表焦点元素。

这是使用FirefoxDriver测试的,我怀疑其他驱动程序也是如此,除了HtmlUnitDriver和类似的驱动程序没有使用完整的浏览器

答案 1 :(得分:11)

在python中:

ints

答案 2 :(得分:5)

不知道比访问document.activeElement

更简单的方法

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

答案 3 :(得分:1)

在Ruby / Capybara中:

page.driver.browser.switch_to.active_element

请注意,这将返回Selenium::WebDriver::Element而不是Capybara::Node::Element