使用 XPath 单击超文本链接

2023-11-29

如果这是一个愚蠢的问题,我很抱歉 - 我是 Selenium 的新手。

我正在测试一个网页,其中的表格中有一些超文本链接。 HTML 看起来像这样:

<table>
  <thead>
    <tr>
      <td><b>History</b></td>
      <td><b>Attributes</b></td>
      <td><b>Xml</b></td>
    </tr>
  </thead>
  <tbody>    
    <tr>
      <td><a href=link here>Show</a></td> 
      <td><a href=link here>Show</a></td>
      <td><a href=link here>Show</a></td> 
    </tr>
  </tbody>
</table>

我想测试每个“显示”链接的点击。它们都有相同的文本,所以我无法通过链接文本引用它们。我一直通过 XPath 引用它们,因此:

driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2]/thead/tr/td[1]").getText()

正确返回“历史记录”并且

driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2]/tbody/tr/td[1]").getText()

正确返回“显示”。

所以我认为:

driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2]/tbody/tr/td[1]")).click()

单击第一列中的“显示”链接。但事实并非如此——什么也没有发生。

If I do:

driver.findElement(By.linkText("Show")).click()

它点击第一个“显示”链接,这正是我所期望的。

我还可以这样做:

driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2].1.0")).click()

这有效,就像

driver.findElement(By.xpath("(//a[contains(text(),'Show')])[2]")).click()

所以,总而言之,所有这些都有效:

driver.findElement(By.linkText("Show")).click()
driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2].1.0")).click()
driver.findElement(By.xpath("(//a[contains(text(),'Show')])[1]")).click()

但这并没有:

driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2]/tbody/tr/td[1]")).click()

Why?


您可以使用以下方法将所有链接收集在一起findElements然后遍历数组。

例子 -List<WebElement> inputs = driver.findElements(By.xpath("//input"));

在你的情况下

List<WebElement> links = driver.findElements(By.linkText("Show"));

然后迭代links然后点击其中的每一个

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 XPath 单击超文本链接 的相关文章

随机推荐

  • ASA 提供的 PowerBi 最新值

    是否可以显示从流分析到达 PowerBi 的最新值 例如 在卡片图类型中 我想象有一个用于选择最新值或其他值的测量时间字段的过滤器值 您现在能做的最好的事情就是使用问答来提出 在过去 10 秒内显示价值 之类的问题 这是一个有效的请求 您可
  • android编程获取Android设备的所有照片

    我正在尝试获取我的 Android 设备的所有照片 我有一个onCreate功能 public void onCreate Bundle savedInstanceState super onCreate savedInstanceStat
  • 使用seaborn绘制条形图

    我正在使用的数据框 https www kaggle com mustiztemiz diabetes 我有以下专栏 Outcome 其值为 0 或 1 我想绘制一个条形图 其中 x 轴上有结果 y 轴上有计数 我的代码如下 sns bar
  • 为什么Python 3.10中的关键字“match”可以作为变量或函数名? [复制]

    这个问题在这里已经有答案了 我不完全明白为什么这个关键字match与其他关键字不同 可以用作变量或函数名称if while etc gt gt gt match abc case abc print Hello Hello gt gt gt
  • 如何将 char* 转换为 int?

    我需要将 char 转换为整数 例如 data SetBytFldPos attribute gt value 属性类中的值是 char SetBytFldPos 采用 int 有很多方法 最简单的是使用strtol 功能
  • 在 JavaScript 中,类和构造函数有什么区别? [复制]

    这个问题在这里已经有答案了 类和构造函数都可以用来创建对象 这typeof对他们俩来说都是function 那么 什么时候应该使用类 什么时候应该使用构造函数 从技术上讲 类是构造函数 任何带有一个 Construct 内部方法被认为是一种
  • SoapHttpClientProtocol.ReadResponse - 请求失败,HTTP 状态 401:未经授权

    我有一个 ASP NET v2 0 Web 应用程序 它使用对 SQL Server Reporting Services 208 R2 实例的引用 使用 ReportService2010 asmx 服务端点 Web 应用程序托管在 Se
  • 通过javascript自动向页面上的每个DIV添加类(连续编号)?

    我正在我的 WordPress 安装上运行一个联系表单插件 一切正常 但我想对我的表单进行更多设计 为此 我必须以不同的方式设置一些 DIV 插件正在处理的 的样式 问题是 所有 DIV 容器都没有 ID 或类 一切都由插件处理 而我的 P
  • 如何使页面脚本识别手动更改的 INPUT 元素值?

    我正在开发一个 Chrome 扩展程序 目前正在尝试让我的内容脚本使用网站上的表单自动进行搜索 我通过更改输入的值然后使用 jQuery 来做到这一点change 方法 因为否则该网站不会开始搜索 var search videoSearc
  • 在没有 IDE 的情况下构建 jar 时出现“无法解析持久性单元”错误

    当我在 intellij Idea 中运行 maven build 命令时 一切正常 但是 当我尝试使用 Maven 控制台在没有 IDE 的情况下运行 mvn clean package 时 我收到一条错误消息 指出无法解析持久性单元 我
  • ios 上的 atob 有什么替代方案吗?

    在我的 Ionic 应用程序中 我使用 atob 命令 它在 chrome 和 android 上运行良好 但由于某种原因在 iOS 上不起作用 有其他选择吗 In IOS atob不接受空格字符 所以使用atob像那样 var input
  • CodeIgniter htaccess子文件夹问题

    我想要我的域中的文件夹 test 中有第二个网站 www mydomian com test Apache 服务器运行在 Linux 上 但是当我在导航器中加载它时 找不到样式 图像 助手 我的htaccess是这样的 重写引擎开启 重写基
  • 将 Selenium RC 作为 Windows 服务运行

    我正在尝试将 Selenium 设置为 Windows 服务运行 看起来没问题 但是似乎运行不正常 使用我已经完成的Windows工具包 C Program Files Windows Resource Kits Tools instsrv
  • 可访问性不一致:字段类型“TagHandler”的可访问性低于字段“EditTag.tag”

    我想创建一个可以编辑班级字段的表单TagHandler 所以我决定作为参数传递给构造函数TagHandler tag where tag 是我要编辑的标签 在我的表单中 我有一个字段tag我对其进行编辑 然后获取其数据 例如 在我的主窗体中
  • 在 Python 中对 3d 数组进行插值。如何避免for循环?

    我有一个数组 我想在第一个轴上进行插值 目前我正在这样做 就像这个例子 import numpy as np from scipy interpolate import interp1d array np random randint 0
  • java for循环问题

    我正在编写一个 Java 程序来计算辛普森积分规则 这是我的代码 请注意 count 4 9 10 11 的输出值中的第二列数字 它们不是我需要的数字 它们不遵循模式 我需要这些数字准确无误 这是怎么回事 我该如何解决 public sta
  • 使用 XML 可绘制的垂直线

    我试图弄清楚如何定义一条垂直线 1dp 厚 用作可绘制对象 要制作水平的 非常简单
  • 根据自定义单元格增加主tableview行高

    我有一个应用程序 其中有一个表格视图在该表格视图的每一行上 我动态创建一个自定义表格视图单元格 下面是代码 NSArray nib NSBundle mainBundle loadNibNamed flowviewTableViewCell
  • Android:地址(来自地理编码)有固定格式吗?

    我需要确定地理位置的地址 因此我使用了 GeoCoder 和 Address 我尝试打印一个 Address 对象并得到以下结果 出于隐私原因 我使用了一些假数据 但我在设备上收到的数据是真实的 Address addressLines 0
  • 使用 XPath 单击超文本链接

    如果这是一个愚蠢的问题 我很抱歉 我是 Selenium 的新手 我正在测试一个网页 其中的表格中有一些超文本链接 HTML 看起来像这样 table thead tr td b History b td td b Attributes b