Работа с html, созданным с помощью Selenium + ExtJs, никогда не доставляет радости, особенно если у вас нет возможности изменить источник.Моя текущая проблема заключается в попытке нажать кнопку, которая содержится в 4-м родителе формы, содержащей определенную метку.Нет доступных идентификаторов или классов.
Странно (я полагаю, это вещь extJs), кнопка находится за пределами формы, поэтому родительская цепочка.На странице также есть несколько форм.Но никаких проблем с xpath.
В программе проверки Firefox Xpath я могу запустить этот xpath - и он найдет кнопку.
(//form[.//label[contains(text(),'Annual')]])[1]//parent::div//parent::div//parent::div//parent::div//button[.='Calculate']
Когда я попробовал его в Selenium RC, он удалилкруглые скобки.Я наблюдаю за выходом журнала Selenium, так что когда это произойдет, становится очевидным.Другой поток stackoverflow говорит, что когда это происходит, ставим xpath = впереди, поскольку Selenium не знает что-то, что начинается без //, является xpath.Итак ...
xp = "xpath=(//form[.//label[contains(text(),'Annual')]])[1]//parent::div//parent::div//parent::div//parent::div//button[.='Calculate']"
result = self.selenium.click_at( xp )
Журнал Selenium показывает, что круглые скобки теперь сохранены, но щелчок не выполняется - click_at () возвращает false и ошибка не генерируется.
Что (без сомнения смертельно очевидная вещь) я скучаю?