Я работаю в Python с unittest и Selenium RC над веб-приложением монстра (загрузка 4 мегабайта).
Я начинаю с чего-то вроде
xp = '//div[id="kahoona"]//button[text()="Big"]'
selenium.click(xp)
что нормально, пока один из наших разработчиков не начнет возиться с такими вещами, как перемещение обработчика событий javascript
вверх по дереву до некоторого родительского элемента на 8 уровней вверх. В этот момент щелчок Selenium просто выдает ошибку.
Они также случайным образом вставляют и удаляют уровни, поэтому на 8 уровней сегодня будет 6 завтра, а на следующий день 9.
Это создает кошмар, так как мне нужно декодировать спагетти, генерируемые extjs, и по одному
Поднимитесь на один уровень вверх - каждый раз по новому xpath и повторяйте тест до тех пор, пока ошибки не прекратятся
То, что я хочу сделать, это, учитывая некоторый html, который может выглядеть так сегодня - только конечные точки являются определенными - (некоторые элементы будут иметь идентификаторы или классы, а некоторые - нет):
'//div[id="kahoona"]//div//table//tr//td//div//div//div//button[text()="Big"]'
Мне нужно найти способ, начиная с кнопки и используя Selenium, подняться по дереву dom (которое неизвестно и изменяется из-за вышеупомянутого поворота) к внешней оболочке и попробовать что-то вроде selenium.click (the_current_xpath) в каждый уровень до
это больше не терпит неудачу. В этот момент у меня должен быть xpath, который работает.
Если это можно сделать относительно эффективно, я могу написать адаптивные тесты, которые обходят бесконечную работу. Разработчики делают свое дело - я не имею никакого влияния и не могу получить доступ к источнику.
Любые предложения очень приветствуются.