使用相对 xpath 和文本描述符定位元素
Locate element using relative xpath and text descriptor
我有一个测试场景,我在 table 中创建一个新条目 (Banana),然后修改该条目,然后将其删除。
table 在新条目的文本描述旁边有一个修改按钮和一个删除按钮。我想使用相对 xpath 来定位文本值,然后根据正在执行的测试场景以某种方式 select 删除或修改按钮。
正在使用的代码示例是:
*** 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 幕后的片段 - 所有删除按钮都使用 "Delete 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>
问题是,当我为 table 创建新条目时,table 内容按字母顺序修改。所以实际上,Banana 条目介于 Apple 和 Orange 之间。
我可以将点击元素操作硬编码到删除按钮:
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]
左侧的元素,因为 table 项目的位置随着新项目的添加而变化。
有没有人对如何 select 香蕉左侧的删除按钮有任何建议?
据了解您的情况,prescending-sibling
xpath 轴应该有帮助:
//td[contains(text(), 'Banana')]/prescending-sibling::td/a[/span[contains(@title, 'Delete')]]
我有一个测试场景,我在 table 中创建一个新条目 (Banana),然后修改该条目,然后将其删除。
table 在新条目的文本描述旁边有一个修改按钮和一个删除按钮。我想使用相对 xpath 来定位文本值,然后根据正在执行的测试场景以某种方式 select 删除或修改按钮。
正在使用的代码示例是:
*** 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 幕后的片段 - 所有删除按钮都使用 "Delete 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>
问题是,当我为 table 创建新条目时,table 内容按字母顺序修改。所以实际上,Banana 条目介于 Apple 和 Orange 之间。
我可以将点击元素操作硬编码到删除按钮:
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]
左侧的元素,因为 table 项目的位置随着新项目的添加而变化。
有没有人对如何 select 香蕉左侧的删除按钮有任何建议?
据了解您的情况,prescending-sibling
xpath 轴应该有帮助:
//td[contains(text(), 'Banana')]/prescending-sibling::td/a[/span[contains(@title, 'Delete')]]