В Selenium, как мне найти "Текущий" объект

Я хотел бы, чтобы Selenium перемещался по меню с помощью клавиш со стрелками - начиная с щелчка по элементу верхнего меню, а затем нажав "DOWN" , "DOWN" ,...

Проблема в том, что вы всегда должны указывать определенный элемент для отправки "DOWN" .

Есть ли способ получить текущий элемент?

Я пробовал:

by.xpath(".")

но он сказал, что выражение непризнано или не возвращает правильный объект.

Я ожидаю, что мне не хватает какого-то глупого трюка.

Ответы

Ответ 2

В Selenium 2.0, если вы используете WebDriver для тестирования тестов в браузере, вы можете использовать класс WebDriver.TargetLocator, чтобы получить элемент в фокусе, в окне/кадре:

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

Если ни один элемент не находится в фокусе, активным элементом будет отображаться body отображаемого документа, что может быть, например, при запуске новой страницы. Когда вы вызываете такие методы, как click, sendKeys и т.д., Вы обнаружите, что WebElement, возвращаемый указанным выше вызовом, всегда будет представлять элемент в фокусе.

Это было протестировано с помощью FirefoxDriver, и я бы заподозрил, что то же самое будет верно для других драйверов, за исключением HtmlUnitDriver и подобных драйверов, которые не используют полноценный браузер под капотом.

Ответ 3

в python:

element = driver.switch_to.active_element