2013-07-09 4 views
0

Привет всем Я столкнулся с трудностями в выборе динамически сгенерированных кнопок (кнопка удаления). Все кнопки «Удалить» имеют одинаковый идентификатор. Как я могу нажать кнопку «Удалить», выбрав xpath для Lync - пользовательский доступ?Selenium Webdriver: как выбрать динамически сгенерированную кнопку, перейдя по ссылке xpath 0:

У меня есть 3 колонки и 2 ряда в таблице. Я хочу нажать кнопку, которая находится во второй строке.

Я попытался топорами XPATH и мой код выглядит следующим образом: driver.findElement(By.xpath("//a[.='PC/E - Home Branch View ']/following-sibling::/td[3]/input")).click(); Но это бросает ошибку:

«org.openqa.selenium.InvalidSelectorException: Выражение XPATH«// A [ . = 'PC/E - Home Branch View']/next-sibling ::/td [3]/input ' не может быть оценен или не выполняется в WebElement (ПРЕДУПРЕЖДЕНИЕ: сервер не предоставил никакой информации о стеке)

Мой HTML код выглядит так:

<TR> 
     <TD id="Lync - User Access" class="profileInnerTable"> 
      <A style="CURSOR: hand" class="TabLink" onmouseover="ddrivetip1('Default for CBA users not in RBS Branches','lightyellow',250)" onmouseout="hideddrivetip"() ;>Lync - User Access </A> 
     </TD> 
     <TD class="profileInnerTable" align="middle">&nbsp; </TD> 
     <TD class="profileInnerTable"> 
      <INPUT style="WIDTH: 100px; HEIGHT: 20px" tabIndex="0" onclick="processRemoveRoleFromDN(form, 'erglobalid=7178977152403244193,ou=roles,erglobalid=00000000000000000000,ou=CBA,dc=com');" value="Remove" type="button" name="removeDiscRole"> 
     </TD> 
    </TR> 
    <TR> 
     <TD id="PC/E - Home Branch View " class="profileInnerTable"> 
      <A style="CURSOR: hand" class="TabLink" onmouseover="ddrivetip1('PC/E access to user\'s Home Branch only - For RBS Branch Users','lightyellow',250)" onmouseout="hideddrivetip"() ;>PC/E - Home Branch View </A> 
     </TD> 
     <TD class="profileInnerTable" align="middle">&nbsp; </TD> 
     <TD class="profileInnerTable"> 
      <INPUT style="WIDTH: 100px; HEIGHT: 20px" tabIndex="0" onclick="processRemoveRoleFromDN(form, 'erglobalid=3113620533928290009,ou=roles,erglobalid=00000000000000000000,ou=CBA,dc=com');" value="Remove" type="button" name="removeDiscRole"> 
     </TD> 
    </TR> 

Я хочу нажать кнопку удаления (во втором ряду). Может ли кто-нибудь предложить мне, как нажать на кнопку удаления, взяв ссылку с помощью идентификатора или Xpath элементов в одной строке?

PS: если я выполнить код driver.findElement(By.xpath("//input[@name='removeDiscRole']")).click();

это просто нажимает на 1 кнопку Удалить (первая строка).

ответ

2

Я думаю, что этот xpath будет работать.

*

// тд [@id = 'PC/E - Home Branch View'] // следующий-родственный :: тд // вход

*

Тег 'a', который вы начали использовать, не имеет братьев и сестер. Теги 'td' не находятся на одном уровне. Они выше уровня, так как тег 'a' вложен в тег 'td'

+0

Привет, ggolding, Спасибо за ваше решение, и я понял, как найти элементы с помощью xPath Axes из вашего объяснения. –

+0

Добро пожаловать :) – ggolding

1

Q .: Я хочу, чтобы нажать на кнопку Удалить (во втором ряду)

Попробуйте для кнопки «removeDiscRole» во втором ряду:

//tr[2]//input[@name='removeDiscRole']" 

Или "(//input[@name='removeDiscRole'])[2]" для вторая кнопка «removeDiscRole» вообще

Q .: Как нажимать кнопку удаления, беря ссылку по идентификатору или Xpath элементов в той же строке.

"//tr[td[@id = 'PC/E - Home Branch View ']]//input[@name='removeDiscRole']" 
+0

Привет, hr_117, Спасибо за решение. он работал, когда я пытался с вашим кодом. –

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