0

我有一个测试场景,我在表中创建一个新条目(香蕉),然后修改该条目,然后将其删除。

该表在新条目的文本描述旁边有一个修改按钮和一个删除按钮。我想使用相对 xpath 来定位文本值,然后根据正在执行的测试场景以某种方式选择删除或修改按钮。 在此处输入图像描述

正在使用的代码示例是:

*** 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 片段 - 所有删除按钮都使用“删除水果”的文本描述符:

 <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>

问题是当我在表中创建一个新条目时,表内容按字母顺序修改。所以实际上,香蕉入口是在苹果和橙子之间。

我可以将单击元素操作硬编码为删除按钮: click element xpath=/html/body/div[1]/div/div[2]/div/div[2]/table/tbody/tr[1]/td[1]/a[2]

我希望找到一种方法来识别香蕉左侧的元素,xpath=/html/body/div[1]/div/div[2]/div/div[2]/table/tbody/tr[1]/td[1]/a[2]因为随着新项目的添加,表格项目的位置会发生变化。

有人对如何选择香蕉左侧的删除按钮有任何建议吗?

4

1 回答 1

2

据了解您的情况,prescending-siblingxpath 轴应该会有所帮助:

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

于 2017-01-26T14:37:28.150 回答