我希望Selenium通过箭头键导航菜单 - 点击顶部菜单项然后按“DOWN”,“DOWN”,...
问题是您必须始终提供特定元素才能将“DOWN”发送到。
有没有办法获得当前元素?
我试过了:
by.xpath(".")
但它表示该表达未被识别或未返回正确的对象。
我希望我能错过一些愚蠢的伎俩。
答案 0 :(得分:32)
在Selenium 2.0中,如果您使用WebDriver
在浏览器中驱动测试,则可以使用WebDriver.TargetLocator
类在窗口/框架中获取焦点元素:
WebDriver driver = ... // initialize the driver
WebElement currentElement = driver.switchTo().activeElement();
如果没有元素处于焦点,则活动元素将成为正在显示的文档的body
,例如,当您启动新页面时可能就是这种情况。当您调用click
,sendKeys
等方法时,您会发现上述调用返回的WebElement
将始终代表焦点元素。
这是使用FirefoxDriver
测试的,我怀疑其他驱动程序也是如此,除了HtmlUnitDriver
和类似的驱动程序没有使用完整的浏览器
答案 1 :(得分:11)
在python中:
ints
答案 2 :(得分:5)
不知道比访问document.activeElement
答案 3 :(得分:1)
在Ruby / Capybara中:
page.driver.browser.switch_to.active_element
请注意,这将返回Selenium::WebDriver::Element
而不是Capybara::Node::Element
。