2013-02-11 3 views
1

Мой XPath является:
Невозможно найти Dynamic Xpath

// * [@ ид = 'form_MenuBar: j_id24']/SPAN

и значение # 24 изменения.

// * [@ ид = 'form_MenuBar: j_id48']/SPAN

Я пытался, но не работает.

driver.findElement (By.xpath ("// a [содержит (@ id, 'form_MenuBar: j_id $')]/span"));

Источник XML:

<li class="ui-menuitem ui-widget ui-corner-all ui-menuitem-active" role="menuitem"> 
    <a id="form_MenuBar:j_id24" class="ui-menuitem-link ui-corner-all ui-state-hover" href="/Demand/j_spring_security_logout"> 
    <span class="ui-menuitem-text">Log off</span> 
    </a> 
</li> 
+0

Можете ли вы разместить html для элемента, который вы ищете? Кроме того, вы пробовали, просто используя 'form_MenuBar: j_id'? Некоторые символы вызывают проблемы при использовании xpath. – Nashibukasan

ответ

2

Просто попробуйте

driver.findElement(By.xpath("//a[contains(@id,'form_MenuBar:j_id')]/span")); 

Если вы используете не содержит в XPath нет необходимости использовать '$'.

+0

Это не сработало. Мой фрагмент кода

Riy1234

+0

@ Riy1234, его решение работает для меня. Это в iFrame? Какой именно XPath вы используете? Какой браузер? Какая версия Селена? – Arran

+0

Нет. Это не в рамке. Xpath - это log_out = // * [@ id = 'form_MenuBar: j_id24']/span, Firefox 15 и selenium java version = 2.28 – Riy1234

0

Кажется, что вы используете java, поэтому я попытаюсь ответить на него на основе этого. Я не разработчик Java, поэтому прошу прощения, если это не синтаксически правильно.

Если все, что меняется это число в пределах ID, и вы знаете ID, вы можете сделать:

driver.findElement(By.id(String.format("form_MenuBar:j_id%d", the_id)); 

Кроме того, я не уверен насчет вашего приложения, которые вы тестируете, но если существует несколько элементов, у которых есть id, начинающийся с «form_MenuBar: j_id», а затем findElement найдет только первый, который может не быть той ссылкой, которую вы пытаетесь найти.

вы можете использовать findElements, который вернет список всех элементов, которые соответствуют этому, а затем повторите их, пока не найдете тот, который вы действительно хотите.

Смежные вопросы