如何从父元素获取文本并从子元素中排除文本 (C# Selenium)

2024-01-20

在 Selenium 中是否可以仅从父元素而不是其子元素获取文本?

例子: 假设我有以下代码:

<div class="linksSection>
  <a href="https://www.google.com/" id="google">Google Link
    <span class="helpText">This link will take you to Google's home page.</span>
  </a>
  ...
</div>

在 C#(或任何语言)中,我将有:

string linktext = driver.FindElement(By.CssSelector(".linksSection > a#google")).Text;
Assert.AreEqual(linkText, "Google Link", "Google Link fails text test.");

但是,链接文本将包含“Google Link此链接将带您进入 Google 主页”。

如果不进行大量字符串操作(例如获取所有子元素的文本并从父元素的结果文本中减去该文本),有没有办法只从父元素获取文本?


这是一个常见问题 https://code.google.com/p/selenium/issues/detail?id=5459 in selenium因为您无法直接访问文本节点 - 换句话说,您的 XPath 表达式和 CSS 选择器必须指向实际元素。

以下是您的问题的可能解决方案列表:

  • 获取父元素的文本,对于每个子元素,获取文本并将其从父元素的文本中删除。您留下的是所需的文本 -Google Link在你的情况下。
  • 如果你想得到Google Link只是为了做出断言,您可能可以检查父母的文本是否正确馅饼与 Google Link. See StringAssert.StartsWith() https://msdn.microsoft.com/en-us/library/ms243970.aspx.
  • get the outerHTML父级文本并提供给 HTML 解析器,例如Html Agility Pack http://html-agility-pack.net/?z=codeplex。沿着这些思路:

    string outerHTML = driver.FindElement(By.CssSelector(".linksSection > a#google")).GetAttribute("outerHTML");
    
    HtmlDocument html = new HtmlDocument();
    html.LoadHtml(outerHTML);
    
    HtmlAgilityPack.HtmlNode a = html.DocumentNode.SelectNodes("//a[@id='google']");
    HtmlNode text = strong.SelectSingleNode("following-sibling::text()");
    
    Console.WriteLine(text.InnerText.Trim());
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从父元素获取文本并从子元素中排除文本 (C# Selenium) 的相关文章

  • 不同提供商的相同 EDMX 文件

    我正在开发一个项目 其中有一个本地数据库 SQL CE 在不存在与服务器的连接的情况下用作缓冲区 在服务器上我想使用相同的数据库布局 当然 我想使用服务器和客户端上可用的 Common dll 中的相同 EDMX 文件 在客户端中 我有一个
  • 使用sqlbulkcopy之前如何创建表

    我有一个 DBF 文件 我正在尝试导入该文件 然后将其写入 SQL 表 我遇到的问题是 如果我使用 SqlBulkCopy 它需要我提前创建表 但在我的场景中这是不可能的 因为 dbf 文件不断变化 到目前为止 这是我的代码 public
  • 读取大文件并制作字典

    我有一个大文件 我需要读取它并从中制作字典 我希望这一切能够尽可能快 然而我的Python代码太慢了 这是一个显示问题的最小示例 首先制作一些假数据 paste lt seq 20000000 lt seq 2 20000001 gt la
  • 如何使用最小起订量模拟私有只读 IList 属性

    我试图嘲笑这个列表 private readonly IList
  • 在异步请求中使用超时回调

    我之前问过这个问题 但我将用提出的解决方案来完成这个问题 并提出另一个问题 我正在使用这个类来进行异步网络请求 http msdn microsoft com en us library system net webrequest aspx
  • std::bind2nd 和 std::bind 与二维数组和结构数组

    我知道 C 有 lambda 并且 std bind1st std bind2nd 和 std bind 已弃用 然而 从C 的基础开始 我们可以更好地理解新特性 所以 我从这个非常简单的代码开始 使用int 数组s 第一个例子 与std
  • C语言中没有循环可以打印数组吗?

    例如 在Python中 如果我们将一个列表作为数组 它会直接用一行代码打印整个数组 有什么办法可以用C语言实现同样的事情吗 简短回答 No 对表格上几乎所有问题的简短回答 用 C 语言做 X 工作能像用 Python 一样简单吗 No 长答
  • 为什么我在 WinForms 列表框中得到“System.Data.DataRowView”而不是实际值?

    每当我运行代码并尝试查看highscore我在列表框中得到的只是System Data DataRowView 谁能明白为什么吗 Code MySqlConnection myConn new MySqlConnection connStr
  • C#生成的csv文件通过电子邮件发送嵌入到Lotus Note中电子邮件的底部

    我遇到了一个奇怪的问题 即使用 NET SmtpClient 通过电子邮件发送的 CSV 附件出现在电子邮件底部 而不是 Lotus Note 中的附件 我只是不知道如何解决这个问题 而且我无法访问客户端计算机 这使得调试非常困难 我可以采
  • 重定向 std::cout

    我需要一个类 在其对象的生命周期内将一个 ostream 重定向到另一个 ostream 经过一番修补后 我想出了这个 include
  • 如果项目包含多个文件夹,如何使用 Add-Migration

    我想Add Migration使用我的 DbContext 但出现错误 The term add migration is not recognized as the name of a cmdlet function script fil
  • 使用联合对 IP 地址进行多种解释?

    在工作中 我们使用以下构造来将 IP 地址解释为 4 字节数组或 32 位整数 union IPv4 std uint32 t ip std uint8 t data 4 这很好用 但是读完这本书的第 97 章 不要使用联合来重新解释表示
  • 如何阻止 Control-I 在 CoreWindow 范围内的 UWP 文本框中插入选项卡?

    当我在 UWP 应用程序中有一个 TextBox 时 对我来说 奇怪的行为 在 Windows 10 中创建通用的空白应用程序 UWP 应用程序 使用以下代码将文本框添加到默认网格
  • 模板定义中的友元函数

    我的问题有点相关this https stackoverflow com questions 1297609 overloading friend operator for template class one 我想重载某些类的运算符 te
  • 按 Enter 继续

    这不起作用 string temp cout lt lt Press Enter to Continue cin gt gt temp cout lt lt Press Enter to Continue cin ignore 或更好 in
  • C# 模式匹配

    我对 C 有点陌生 我正在寻找一个字符串匹配模式来执行以下操作 我有一个像这样的字符串 该书将在 唐宁街 11 号接待处 并将由主要医疗保健人员参加 我需要创建一个 span 标签来使用 startIndex 和 length 突出显示一些
  • Web API 2.0 使用 pascalcase 模型接收驼峰式命名的 JSON 数据

    我正在尝试对我的 Web API 进行 PUT 调用 我在 WebApiConfig cs 中设置了以下内容 以处理以驼峰形式将数据发送回我的 Web 项目 config Formatters JsonFormatter Serialize
  • C# 和断点 - 这里有魔术师吗?

    我有这个 public static void ByLinkText string text for var i 0 i lt 50 i try Setup Driver FindElement By LinkText text Click
  • 在两个点之间创建一条曲线,每个点都具有标准化向量

    因此 我需要一种写入方法来在两点之间创建一条曲线 每个点都有一个指向任意方向的归一化向量 我一直在尝试设计这样一种方法 但一直无法理解数学 在这里 由于一张图片胜过一千个文字 这就是我所需要的 在图中 矢量垂直于红线 我相信向量需要进行相同
  • boost::spirit::qi::语法和可变参数模板

    我在使用可变参数模板定义语法时面临一个问题 我首先定义一些包含在某些结构中的简单语法 例如纬度 经度 如下所示 include

随机推荐

  • 有没有更好的方法在 C# 中创建深克隆和浅克隆?

    我一直在为一个项目创建对象 在某些情况下我必须为此对象创建深层副本 我想出了使用 C 的内置函数 MemberwiseClone 困扰我的问题是 每当我创建一个新类时 我就必须编写一个像下面的代码这样的函数来进行浅拷贝 有人可以帮我改进这部
  • C# 链式ContinueWith不等待上一个任务完成

    我正在测试 C async await 的异步性 并发现了一个惊喜 ContinueWith 的后续代码不会等待上一个任务完成 public async Task
  • 如何在 Android 模拟器中模拟总网络丢失

    我正在尝试编写一个应用程序 需要知道何时没有可用的 IP 网络连接 我正在使用 android net conn CONNECTIVITY CHANGE 广播事件以及 ConnectivityManager 对状态变化做出反应以实现此目的
  • 如何根据文本过滤 VS Code 中的问题?

    我在 Windows 10 x64 上使用 VS Code 1 41 0 在我的代码 使用您可能从未听说过的研究语言 中 我在 问题 面板中收到很多特定类别的警告消息 我想忽略这些消息 消息的文本在不同实例中略有不同 但始终包含 重复 一词
  • 寻找一种非 LL(1) 的语言?

    我最近一直在研究很多非 LL 1 的语法 其中许多可以转换为 LL 1 的语法 然而 我从未见过这样的例子明确的语言这不是 LL 1 换句话说 一种语言的任何明确语法都不是 LL 1 我也不知道如果我不小心偶然发现了一种语言 我将如何证明我
  • Python 中 open 和 codecs.open 的区别

    在 Python 中打开文本文件有两种方法 f open filename And import codecs f codecs open filename encoding utf 8 When is codecs open优于open
  • 如何获取 Firestore 文档大小?

    From Firestore 文档 https firebase google com docs firestore quotas 我们得到Firestore 文档的最大大小 is 文档的最大尺寸1 MiB 1 048 576 字节 QUE
  • Polarion ALM 工具 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我们正在公司寻找完整的 ALM 解决方案 我们正在研究 Polarion ALM 和 RTC 有人听说过 Polarion 完整的 ALM 工具吗 如
  • 将 SVN 提交发送到 RSS 源

    所以我最喜欢的网络工具 Subtlety http subtlety errtheblog com 最近已停止使用 这意味着我无法再轻松访问我关注的各种 SVN 项目的提交日志 是否有任何其他工具可以轻松地为公共 SVN 存储库生成 RSS
  • 在 Flutter 中实现视频源的最佳方式是什么?

    我正在 flutter 中构建一个应用程序 其中包含类似 TikTok 中的视频源 您可以想象一个 ListView 您可以在其中滚动浏览一些视频 5 25 秒 这些视频存储在 Google Cloud Platform 中 目前 包含超过
  • 无符号整数差异的意外结果

    我很惊讶这个函数为 dif1 和 dif2 产生不同的值 void test unsigned int x 0 y 1 long long dif1 x y long long dif2 int x y printf dif lld lld
  • 如何关闭 Intellij IDEA 中的自动括号生成?

    当输入函数名称 或自动完成 时 IDEA 会自动在其后面添加括号并将光标放在它们之间 富 我非常不喜欢这个 并且更希望它让我自己输入括号 有什么办法可以做到这一点吗 Update 回复 插入配对支架 设置 所以 这个选项对我来说已经关闭了
  • Graphics CopyFromScreen 方法如何复制位图?

    private void startBot Click object sender EventArgs e Bitmap bmpScreenshot Screenshot this BackgroundImage bmpScreenshot
  • AVSpeechSynthesizer isSpeaking 在 Swift 中不起作用

    因此 更新到 Xcode 12 0 1 后 AVSpeechSynthesizer 现在可以在模拟器上运行 它已经有一段时间没有为我工作了 现在 无论合成器是否正在说话 isSpeaking 变量始终为 false 我想根据合成器是否在说话
  • 如果位置不是美国,则使用 Amazon Mechanical Turk?

    亚马逊土耳其机器人 https www mturk com mturk welcome是一个大规模微外包 API 您可以在其中以相对便宜的价格 例如每张图像 0 10 U 完成大量简单的小任务 例如 此图像中是否有商店 亚马逊似乎认为这项服
  • 使用数据增强层在 Tensorflow 2.7.0 上保存模型

    尝试使用 Tensorflow 版本 2 7 0 保存具有数据增强层的模型时出现错误 这是数据增强的代码 input shape rgb img height img width 3 data augmentation rgb tf ker
  • 带 Spring JMS 和不带 Spring JMS 的 AUTO_ACKNOWLEDGMENT 模式之间的区别

    我试图了解 JMS 中的确认模式如何工作 我正在阅读这个来源 它让我非常困惑 因为它与 Spring 的文档所说的相矛盾 消息人士说一件事 从http www javaworld com article 2074123 java web d
  • firebase部署错误,错误:无法列出(项目名称)的功能

    我在 Firebase 中托管我的 Web 应用程序 并使用 Gitlab CI CD 部署它 并且它一直工作得很好 但今天由于某种原因我在管道工作时收到此错误 56Error Failed to list functions for pr
  • 为什么将 /textbackslash{} 插入到 knitr Rmd 图形中的 .tex 中?

    我有一个结果部分 其中包括代码块和文本 当我将 Rmd 编 织成 pdf 时 我的两个人物周围都有 LaTeX 代码 字幕未正确呈现 查看我的 Results tex 文件 我可以看到我有几个 textbackslash 插入图中的LaTe
  • 如何从父元素获取文本并从子元素中排除文本 (C# Selenium)

    在 Selenium 中是否可以仅从父元素而不是其子元素获取文本 例子 假设我有以下代码 div class div www google com id google gt Google Link span class helpText T