【问题标题】:Xpath does not recognize regex partsXpath 无法识别正则表达式部分
【发布时间】:2017-12-08 21:55:37
【问题描述】:

我是新手,我正在尝试了解 selenium 和 XPath 的用法

string exp = "//*[@id=\"g_1_bHwVovAN\"]/td[2]";
var dateTime = chromeDriver.FindElementsByXPath(exp);

使用此代码,我只能获取 1 个元素。我怎样才能改变这个“bHwVovAN”部分,这样我就可以接触到网站上的所有这些元素。

string exp = "//*[@id=\"g_1_[^[0-9+]]\"]/td[2]";
var dateTime = chromeDriver.FindElementsByXPath(exp);

我尝试使用正则表达式,但它不起作用。它不识别正则表达式部分。另外,我查看了其他帖子,并尝试使用火柴,也没有奏效。我该如何解决?

如果我没有写清楚和正确的方式,我也是英语新手。对不起

【问题讨论】:

  • 要使用正则表达式,你不需要使用fn:matches吗?否则,is 正在执行相等匹配,并且:不会通过相等匹配。喜欢:stackoverflow.com/a/10404321/23354。作为一个完整的猜测,也许:string exp = "//*[matches(@id, 'g_1_[^[0-9+]]')]/td[2]"; ?
  • @MarcGravell 我尝试使用该模板但它不起作用 [link]stackoverflow.com/questions/21405267/…

标签: c# selenium xpath


【解决方案1】:

XPath 2.0 中有一个matches() 函数可以解决您的问题,但selenium 不支持此XPath 版本。

您可以尝试在下面匹配具有以"g_1_" 开头的id 属性的元素:

string exp = "//*[starts-with(@id,\"g_1_\")]/td[2]";

【讨论】:

  • 非常感谢!完美运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-04
  • 1970-01-01
  • 1970-01-01
  • 2023-01-16
相关资源
最近更新 更多