Дерево Aliases для Silverlight-приложения
2012-09-18 09:08
Всем доброго утра.
Существует проект для Silverlight-приложения, которым давно никто не занимался. Работа с объектами приложения осуществляется через Aliases. За время простоя проекта многие объекты (в силу кропотливого труда наших славных кодеров) изменили свое положение в дереве объектов. Соответственно, теперь при запуске скриптов тест завершается неудачей всякий раз, когда не находит нужный объект на указанном месте.
В связи с этим возник вопрос: можно ли каким-то чудесным образом автоматически обновить все дерево Aliases (скрипт, функция, обработчик или еще как-то) или мне придется вручную проверять путь каждого объекта (а их количество, боюсь соврать, приближается к тысяче)?
Первая проблема:
Имеется код страницы (не общедоступной):
<span style="background-color: transparent;">
<img align="TEXTTOP" width="16" height="16" border="0" suppress="TRUE" src="http://.../file.png">
Схемы открытия счетов
</span>
При попытке поиска данного элемента по следующему xpath-выражению элемент не находится (ни в SeleniumIDE, ни в WebDriver):
//span[text()='Схемы открытия счетов']
Что я делаю не так (пробел пробовал ставить перед "Схемы")? Желательно найти элемент именно по тексту (и тегу span, т.к. существует другой элемент с таким же текстом, но другим тегом (nobr).
Вторая проблема:
Тот же самый элемент имеет следующий xpath:
//html/body/div[2]/div/div/div/div[2]/div/div[2]/div/div/div/div/div/div/div/div[7]/div/table/tbody/tr/td/table/tbody/tr/td/span
При сокращении получается следующее:
//div[7]/div/table/tbody/tr/td/table/tbody/tr/td/span
Данный элемент очень легко обнаруживается в SeleniumIDE (по кнопке "Find"), но никак не удается найти его в WebDriver. Были мысли, что проблема в том, что страница состоит из кучи фреймов. Но после анализа кода страницы понял, что во время поиска элемента я нахожусь в том фрейме, где элемент и находится (пробовал все варианты перебирать). Вопрос: существует ли способ поиска элементов сразу по всей странице, без необходимости переключения между фреймами (как это делается в SeleniumIDE)? И есть ли вероятность, что WebDriver некорректно выбирает фрейм для поиска элемента (не смотря на то, где я нахожусь)?
<div id="id-main-new-main_catalog_region_smoll_new" class="hotel_ib">
<div class="caption_index">
<a class="new_title_link" href="http://hotels24.stage/all_cities/ ">
<span class="tnr">143</span>
города
</a>
в Украине!
</div>
driver.findElement(By.linkText("143 города")).click(); - такой вариант не подходит поскольку число в ссылке может меняться
Пробовала такой вариант -
driver.findElement(By.xpath("//div[4]/div[1]/a[1]/span")).click();
и
driver.findElement(By.xpath("//div[4]/div[1]/a[1]")).click();
Пишет ошибку Unable to locate element: {"method":"xpath","selector":"//div[4]/div[1]/a[1]/span"}