用regexp Ruby Capybara替换文本

时间:2016-04-12 11:31:09

标签: ruby regex selenium-webdriver cucumber capybara

我有一个问题已经与此问题相关联,但这个问题是针对不同的方法。

我在网页上有一串文字,在交易完成后会产生一个时间戳(hhmmss)。

我无法使用Time.now,因为处理时间因许多因素而异。

页面上的文字是:

expect(find(location)).to have_text trans_text

我会在元素中查看我的测试中的文字:

trans_text = find(location, text: 'Your transaction reference number is: 0 16123 (timestamp is here) A1')

我可以将位置文本设置为变量:

trans_text = find(location, text: 'Your transaction reference number is: 0 16123 (\d+) A1')

然后用正则表达式替换时间戳,然后期望时间戳在两次之间?

我尝试过:

Unable to find css "#main > div > div.section-content > div.two-col.retention-success > div.second-col > div.alert-complete > p" with text "Your retention certificate number is: 0 16123 (/d+) A1".

但没有快乐。我收到以下错误:

TabLayout

如何输入正则表达式来替换文本的时间戳部分?

由于

1 个答案:

答案 0 :(得分:0)

根据Capybara documentation

  

text(String,Regexp) - 只查找包含此文本或与此正则表达式匹配的元素

您必须使用正则表达式(而不是字符串)进行搜索:

find('p', text: /Your transaction reference number is: 0 16123 (\d+) A1/)

或者只需一步验证:

expect(page).to have_text /Your transaction reference number is: 0 16123 (\d+) A1/