【问题标题】:Selenum-server fails regexp pattern that passes in Selenium-IDESelenium-server 无法通过 Selenium-IDE 传递的正则表达式模式
【发布时间】:2011-11-08 09:46:16
【问题描述】:

我有一个(我猜)简单的问题。

在 Hudson 成功构建后,我正在运行 Selenium 测试用例(HTML、selense)。当我在构建后在 IDE 中运行测试用例时,测试用例通过但不在服务器上。失败的案例包含一个正则表达式,如下所示:

regexp:The profile details have been updated, it can take up to [0-9]*\s\w*\(.\) until the changes are fully visible.

目标是匹配时间,例如 1 小时、30 秒、4 分钟

有没有人遇到过这样的问题,你是怎么解决的?

【问题讨论】:

  • 这看起来适合“1 小时”,但不适用于“1 小时”或“2 小时”。括号总是存在吗?
  • selenium 不提供任何错误文本吗?

标签: regex selenium hudson-plugins


【解决方案1】:

我会使用稍微简单的表达式,假设您不需要处理1 second2 seconds 等,而只需要处理1 second(s)2 second(s) 之类的东西,您可以使用此表达式:

尝试用

替换正则表达式的东西
[0-9]+ [a-z]+\(s\)

一些较旧的正则表达式风格 (POSIX ERE) 不允许速记字符类,因此如果以某种方式调用这些规则,那么它将在 \s\w 上失败(甚至可能在 . 上) .上面的表达式几乎可以在任何地方工作;虽然它没有那么灵活,但它应该足够灵活,适合您的情况。

一些更老的风格(POSIX BRE)不支持速记重复,实际上对花括号和括号的解释也不同。如果这是预期的味道,它可能会在任何正常表达式上失败,你需要使用类似的东西:

[0-9]\{1,\} [a-z]\{1,\}(s)

如果这些都不起作用,那么实现您的正则表达式的引擎存在显着差异页面呈现和解析方式存在一些差异/由 Selenium 服务器搜索/分析。

如果是这种情况,可能有<br> 标记或格式化标记(如<i><span>)被解析为文本而不是从字符串中提取。然后,changes are fully visible 之类的内容可能会被解析为 changes are <em>fully</em> visible,从而导致测试失败

【讨论】:

  • @SebastianK 如果您有兴趣,regular-expressions.info 是一个很好的正则表达式入门到综合教程网站 - 这是我了解 90% 的正则表达式知识的地方!
【解决方案2】:

当您在本地测试它与 hudson 运行时,操作系统平台是否存在差异?

我知道我在使用 windows xp 与 unix(部署了 hudson)时遇到了一些问题。虽然我不认为这里是这种情况,但只是一个想法。

【讨论】:

  • 不,它们都在 Mac OS X 上运行。Snow leopard 和我认为服务器正在运行 lion。
  • Selenium 的“regexp:”不是特定于平台的,但它可以是特定于浏览器的。特别是,它使用浏览器的 JavaScript RegExp 实现来进行匹配。
  • 好的,好点,我不知道。我正在使用的东西与硒无关,但我忘了提及。
猜你喜欢
  • 1970-01-01
  • 2021-02-02
  • 2013-10-12
  • 1970-01-01
  • 2020-08-15
  • 2011-04-21
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
相关资源
最近更新 更多