Ответ 1
Не знаю более простого способа, чем доступ к document.activeElement
Я хотел бы, чтобы Selenium перемещался по меню с помощью клавиш со стрелками - начиная с щелчка по элементу верхнего меню, а затем нажав "DOWN" , "DOWN" ,...
Проблема в том, что вы всегда должны указывать определенный элемент для отправки "DOWN" .
Есть ли способ получить текущий элемент?
Я пробовал:
by.xpath(".")
но он сказал, что выражение непризнано или не возвращает правильный объект.
Я ожидаю, что мне не хватает какого-то глупого трюка.
Не знаю более простого способа, чем доступ к document.activeElement
В Selenium 2.0, если вы используете WebDriver
для тестирования тестов в браузере, вы можете использовать класс WebDriver.TargetLocator
, чтобы получить элемент в фокусе, в окне/кадре:
WebDriver driver = ... // initialize the driver
WebElement currentElement = driver.switchTo().activeElement();
Если ни один элемент не находится в фокусе, активным элементом будет отображаться body
отображаемого документа, что может быть, например, при запуске новой страницы. Когда вы вызываете такие методы, как click
, sendKeys
и т.д., Вы обнаружите, что WebElement
, возвращаемый указанным выше вызовом, всегда будет представлять элемент в фокусе.
Это было протестировано с помощью FirefoxDriver
, и я бы заподозрил, что то же самое будет верно для других драйверов, за исключением HtmlUnitDriver
и подобных драйверов, которые не используют полноценный браузер под капотом.
в python:
element = driver.switch_to.active_element