在Selenium中如何找到"当前"对象

Bil*_*l K 17 java selenium

我希望Selenium通过箭头键导航菜单 - 从单击顶部菜单项开始,然后按"DOWN","DOWN",...

问题是你必须总是提供一个特定的元素来发送"DOWN".

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

我试过了:

by.xpath(".")
Run Code Online (Sandbox Code Playgroud)

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

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

Vin*_*lds 33

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

WebDriver driver = ... // initialize the driver
WebElement currentElement = driver.switchTo().activeElement();
Run Code Online (Sandbox Code Playgroud)

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

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


小智 13

在python中:

element = driver.switch_to.active_element
Run Code Online (Sandbox Code Playgroud)

  • 虽然此代码可以回答这个问题,但提供有关如何和/或解决问题的原因的其他背景将提高答案的长期价值. (5认同)
  • 我不需要额外的上下文。 (4认同)

pre*_*sto 5

不知道比访问更直接的方式 document.activeElement

如何在Selenium RC中测试哪个元素具有焦点?