xpath - 动态表的 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>
解决方案
假设您使用的是 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()
推荐阅读
- java - 如何将 url 图像加载到位图,将其转换为可绘制并使用 imageview 显示
- sql-server - 使用 OPENROWSET 通过 SQL Server 提供程序查询 Active Directory 时出错
- ios - Xamarin iOS 项目中的自动预配
- c++11 - 如何解决此错误“请求从'B'转换为非标量类型'D'”?(试图在基类的字段之间做“运算符+”)
- sass - 如何使用 sass mixin 附加一组类
- javascript - 如何使用asp C#从日期范围选择器中获取值
- xml - 如何在 XML 标记中转义 @ 符号
- scala - Scala,结合异构地图 - Hmap 与 monoid 操作
- python - 递归二分查找python
- mongodb - 检索动态子文档键