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