2013-09-16 6 views
0

Используя xpath, мне нужно выбрать текст «level38a», используя динамическую ссылку «выбрать». В коде HTML, который я вижу, содержится 2 <td> с текстом "level38a" и "select".Selenium webdriver - Как выбрать динамический идентификатор с помощью xpath?

PS: В моем приложении у меня есть более 30 ссылок «выберите» для разного текста. Поэтому использование id="lnk_LEVEL_2449" неэффективно.

Я использую приведенный ниже код, чтобы выбрать текст, но он не нажимает кнопку выбора.

driver.findElement(By.xpath("//tr[td//a[@value='Select']]/td/a[contains(text(),'level38a')]"));` 

HTML фрагмент

<tr> 
    <td> 
     <img class="imHeader" alt="" src="include/img/context/level_dash.gif"> 
     <img class="imHeader" alt="" src="include/img/context/icon_telco_level.gif"> 
     level38a 
    </td> 
    <td> </td> 
    <td> 
     <a id="lnk_LEVEL_2449" href="jfn?isLevel=true&level=L4%3A2449&mfunc=614&cfunc=615&oid=L4%3A2191&ctx=L&jfnRC=9">Select</a> 
    </td> 
</tr> 

ответ

1

Этот метод driver.findElement(By.xpath("//tr[td//a[@value='Select']]/td/a[contains(text(),'level38a')]")); только находит элемент, не щелкните его. Вам нужно добавить действие click(). Как это:

driver.findElement(By.xpath("//tr[td//a[@value='Select']]/td/a[contains(text(),'level38a')]")).click(); 

Edit: Я не смотрел на свой XPath. Это неверно. Пожалуйста, попробуйте эти:

"//tr[td//a[contains(text(), 'Select')]]/td[contains(text(),'level38a')]" 

или просто:

"//td[contains(text(), 'level38a')]" 
+0

Это не работает. Получение следующей ошибки: Невозможно найти элемент: {"method": "xpath", "selector": "// tr [td // a [@ value = 'Select']]/td/a [содержит (текст(), 'ShapeCSR')] "} – kkr

+0

Будет ли это потому, что это был« ShapeCSR », а не« level38a »? –

+0

@ Koushic, взгляните на мой отредактированный ответ. – Robert

0

Используется ниже XPath для выбора динамических идентификаторов и он работал отлично. Сначала найдите текст «level38a» на странице и нажмите ссылку «Выбрать».

driver.findElement (By.xpath ("// tr [td [contains (text(), 'level38a')]]/td // a [содержит (текст(), 'Select')]" .)) нажмите();

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