我有这样一种常见的情况,我想通过元素的可见文本来定位元素,但文本旁边是用于图标的i标记(不确定这是否是有效的HTML).这是设置特定按钮组件的方式,整个测试站点都在使用这种方式.

以下是一些示例HTML语言

<a href="#/provider_data_files/create" ng-click="providerDataFileCtrl.showAddProviderDataFileModal()" class="btn btn-primary pull-right">
        <i class="fa fa-plus btn-icon"></i> 
        Add Provider Data File
</a>

目前,忽略定位此链接的所有其他方法,因为我的用例需要使用可见文本.如何通过可见文本定位此元素?XPath:

//*[contains(text(), 'Add Provider Data File')]

失败了,我猜是因为奇怪的 struct .

推荐答案

给定的html为:

<a href="#/provider_data_files/create" ng-click="providerDataFileCtrl.showAddProviderDataFileModal()" class="btn btn-primary pull-right">
    <i class="fa fa-plus btn-icon"></i> 
    Add Provider Data File
</a>

所需的<a>个 node 由两个子 node 组成:

  • A 100 node
  • 具有文本100Text node

要通过元素的可见文本(即101)来定位元素,您可以使用以下locator strategies之一:

  • 使用PARTIAL_LINK_TEXT:

    element = driver.find_element(By.PARTIAL_LINK_TEXT, "Add Provider Data File")
    
  • 使用XPATH:

    element = driver.find_element(By.XPATH, "//a[contains(., 'Add Provider Data File')]")
    

要找到103元素,您需要对visibility_of_element_located()求导WebDriverWait,您可以使用以下locator strategies之一:

  • 使用PARTIAL_LINK_TEXT:

    element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.PARTIAL_LINK_TEXT, "Add Provider Data File")))
    
  • 使用XPATH:

    element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//a[contains(., 'Add Provider Data File')]")))
    
  • Note:您必须添加以下导入:

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

概念证明

Add Provider Data File

Html相关问答推荐

restrict. form—text width to input s width'

仅在加载视频时显示描述(<;Video>;标签)

是否可以部分列出一个HTML有序列表

我应该怎么做才能显示出整个字符串?

使用HTML进行DAX测量

滚动两个不同高度的DIV;一个等待另一个

assets资源 净值元素不会扩展到涵盖子项

无法从路径参数获取ID

如何创建剪切到路径的循环文本字幕?

子元素的单一背景

如何在VB.NET中用打印预览和直接打印的方式在Html中打印数据表的内容,包括页眉/设置纸张/方向/适合页面/总计

try 更新我的Node.js应用程序中的用户,但我收到错误.然而,当我使用postman 时,更新工作正常

为什么带有截断的 contentedible div 在受约束时会在 Chrome 中添加空格

Web 组件 #shadow-root css 泄漏到文档

为什么 Flexbox 中相邻元素上的 flex:1 会影响另一个元素的固定宽度?

如何使用jQuery将我制作的通用头部和底部加载到多个HTML文件中?

如何通过像图像一样的 元素来调整 SVG 图标的大小

在 CSS 中的 div 中获取文本以环绕其他文本?

在 html 邮箱的左侧和右侧制作多个元素很热门吗?

调整大小时 CSS 溢出