2017-01-26 5 views
0

У меня есть тестовый сценарий, в котором я создаю новую запись (Banana) в таблицу, а затем изменяю ее и удаляю.Найти элемент с использованием относительного xpath и текстового дескриптора

В таблице есть кнопка изменения и кнопка удаления рядом с текстовым описанием новой записи. Я хотел бы использовать относительный xpath для определения текстового значения, а затем выбрать кнопку удаления или изменения в зависимости от выполняемого тестового сценария. enter image description here

Образец кода, используемый:

*** Settings *** 
[Documentation] Delete Fruit from table 
Suite Teardown Close all browsers 
Library Selenium2Library 
Library XvfbRobot 
Library Collections 

*** Variables *** 
${delFruit} Banana 

*** Test Cases *** 
Delete Fruit Button 
    wait until element is visible xpath=//div[@id='${delFruit}'] 
    click element xpath=//div[@id='${delFruit}']/a[2]/span 
    confirm action 

Вот надрез в HTML закулисы - все удалять кнопки с помощью текстового дескриптора «Удалить Fruit»:

<a class="button micro primary error" onclick="deleteFruit(3)" href="javascript:void(0)"> 
    <span class="fa fa-trash" title="Delete Fruit" border="0" align="absmiddle"></span> 
    </a> 
    </td> 
    <td class="cell ">Banana</td> 

Проблема в том, что когда я создаю новую запись в таблицу, содержимое таблицы изменяется в алфавитном порядке. так что на самом деле банановая запись находится между Apple и Orange.

я мог бы жестко закодировать действие нажмите элемент на кнопку удаления: click element xpath=/html/body/div[1]/div/div[2]/div/div[2]/table/tbody/tr[1]/td[1]/a[2]

Я надеялся найти способ, чтобы идентифицировать элемент слева от Banana xpath=/html/body/div[1]/div/div[2]/div/div[2]/table/tbody/tr[1]/td[1]/a[2] как размещение элементов таблицы смещается в добавлены новые элементы.

Есть ли у кого-нибудь предложения по выбору кнопки удаления слева от Бананы?

ответ

1

Насколько понимаю вашу ситуацию, prescending-sibling ось должна помочь XPath:

//td[contains(text(), 'Banana')]/prescending-sibling::td/a[/span[contains(@title, 'Delete')]]

+0

спасибо Антону, что это именно то, что я искал! Я пытаюсь это сейчас! –