Selenium中正则表达式如何工作?

8
我想存储id的一部分并丢弃其余部分。例如,我有一个带有'id'为'element-12345'的html元素。我想丢弃'element-'并保留'12345'。我该如何实现?
我可以像这样捕获和输出值: | storeAttribute | //pathToMyElement@id | myId | | echo | ${!-myId-!} | |
当我运行测试时,我得到类似于以下内容: | storeAttribute | //pathToMyElement@id | myId | | echo | ${myId} | element-12345 |
我正在使用Selenium IDE进行录制,并将测试复制到Fitnesse中,使用Selenium Bridge fixture。问题是每次运行测试时我都使用一个干净的数据库,并且需要捕获和在整个测试中使用随机生成的ids。

+1 因为 Selenium 是一个优秀的工具! - Gavin Miller
3个回答

11
解决方法是使用JavaScript中的replace()函数和storeEval
| storeAttribute | //pathToMyElement@id                                   | elementID |
| storeEval      | '${elementID}'.replace("element-", "")                 | myID      |

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

| echo | ${myID} | 12345 |

2

/element-(\d+)/i

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


谢谢!现在这段代码该放在哪里? | storeAttribute | //pathToMyElement@id | myId | - Andrew
非常抱歉,我以前从未使用过Selenium。我发布了这个正则表达式,希望有使用过它的人能够来帮助你使用它。不过我会进行一些研究,看看是否能给你一个答案 :) - Salty

2

可能会有类似这样的解决方案:

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

要进行正则表达式操作需要使用XPath 2.0 - 不确定Selenium实现的是哪个版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接