正则表达式如何在 selenium 中工作?

Posted

技术标签:

【中文标题】正则表达式如何在 selenium 中工作?【英文标题】:How do regular expressions work in selenium? 【发布时间】:2010-09-29 01:09:24 【问题描述】:

我想存储 id 的一部分,并丢弃其余部分。例如,我有一个 id 为“element-12345”的 html 元素。我想扔掉'元素-'并保留'12345'。我怎样才能做到这一点?

我可以捕获并回显该值,如下所示:

|商店属性 | //pathToMyElement@id |我的身份证 | |回声 | $!-myId-! | |

当我运行测试时,我得到如下信息:

|商店属性 | //pathToMyElement@id |我的身份证 | |回声 | $myId |元素 12345 |

我正在使用 Selenium IDE 进行录制,并使用 Selenium Bridge 夹具将测试复制到 Fitnesse 中。问题是我每次运行测试时都使用一个干净的数据库,其中包含我需要在整个测试过程中捕获和使用的随机 ID。

【问题讨论】:

+1 因为 selenium 是一个很好的工具! 【参考方案1】:

解决方案是使用 javascript replace() 函数和 storeEval:

| storeAttribute | //pathToMyElement@id                                   | elementID |
| storeEval      | '$elementID'.replace("element-", "")                 | myID      |

现在,如果我回显myID,我只会得到 ID:

| echo | $myID | 12345 |

【讨论】:

【参考方案2】:

/元素-(\d+)/i

这是一个正则表达式,将捕获破折号后的数字。

【讨论】:

谢谢!现在我的代码会去哪里? |商店属性 | //pathToMyElement@id |我的身份证 | 真的很抱歉,我以前从未使用过 Selenium。我发布了正则表达式,希望以前使用过它的人可以过来帮助您使用它。我会做一些研究,看看我是否能找到答案:)【参考方案3】:

这样的事情可能工作:

| storeAttribute | fn:replace(//pathToMyElement@id,"^element-","") | myId |

要执行正则表达式需要 XPath 2.0 - 不确定 Selenium 实现了哪个版本。

【讨论】:

以上是关于正则表达式如何在 selenium 中工作?的主要内容,如果未能解决你的问题,请参考以下文章

在在线正则表达式测试器中工作的 MariaDB 正则表达式在 SELECT WHERE REGEXP 中不起作用

Robotframework - 在python中工作的正则表达式不匹配

非捕获组不在正则表达式中工作

正则表达式在在线正则表达式测试器中无法在Angular Validators.pattern()中工作

正则表达式在文本编辑器(崇高)中工作,但在 python 中不工作 [重复]

正则表达式搜索 - 在测试人员中工作,而不是在Spyder中[重复]