首页 > 解决方案 > 动态表的 XPath

问题描述

在应用程序中,我必须单击红十字标记才能删除。我附上了显示删除图标的图像图像。我需要一个 xpath 来单击红十字图标。

我尝试遵循 xpath 但它不起作用:

//div[contains(text(),'UG_AUTOMATION')]*/i[@class='x-fa fa-icon-red fa-times-circle']

下面是html标签

<td class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1089 x-grid-cell-first x-unselectable" style="width: 485px;" role="gridcell" tabindex="-1" data-columnid="gridcolumn-1089" xpath="1"><div unselectable="on" class="x-grid-cell-inner " style="text-align:left;">UG_AUTOMATION</div></td>
<td class="x-grid-cell x-grid-td x-grid-cell-actioncolumn-1090 x-action-col-cell x-grid-cell-last x-unselectable" data-qtip="Delete" style="width:50px;" role="gridcell" tabindex="-1" data-columnid="actioncolumn-1090" xpath="1"><div unselectable="on" class="x-grid-cell-inner x-grid-cell-inner-action-col" style="text-align:center;"><span class="btn btn-default btn-sm"><i class="x-fa fa-icon-red fa-times-circle"></i></span><div tabindex="-1" role="button" class="x-action-col-icon x-action-col-0  " data-tabindex-value="0" data-tabindex-counter="1"></div></div></td>

标签: xpath

解决方案


假设您使用的是 Python,您可以使用以下 XPath(我们使用following轴):

//div[contains(text(),'UG_AUTOMATION')]/following::i[@class='x-fa fa-icon-red fa-times-circle']

具有所需导入的代码段:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

element= WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[contains(text(),'UG_AUTOMATION')]/following::i[@class='x-fa fa-icon-red fa-times-circle']"))).click()

单击的替代元素:

//div[contains(text(),'UG_AUTOMATION')]/following::span[@class="btn btn-default btn-sm"]

如果您需要单击div包含图标的元素,则必须删除其属性:

element= WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[contains(text(),'UG_AUTOMATION')]/following::div[1]")))
driver.execute_script("arguments[0].removeAttribute('unselectable')", element)
element.click()

推荐阅读