2016-04-12 10 views
2

私はすでにこの問題にリンクしている質問がありますが、この質問は別のアプローチです。regexpとテキストを置き換えるRuby Capybara

私は、トランザクションが完了した後にタイムスタンプ(hhmmss)を含むウェブページ上に文字列を生成します。

多くの要因によって処理時間が異なるため、Time.nowは使用できません。

ページ上のテキストは次のとおりです。

"Your transaction reference number is: 0 16123 (timestamp is here) A1" 

私は私のテストでテキストを読むための要素の中に見ることになります:

expect(find(location)).to have_text trans_text 

私は、変数として場所テキストを設定することができます:

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

次に、タイムスタンプを正規表現に置き換えて、そのタイムスタンプが2回になると予想しますか?

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". 

テキストのタイムスタンプ部分を置き換える正規表現を入力するにはどうすればよいですか? Capybara documentationによると

おかげ

+0

Wh形式はタイムスタンプですが、例を挙げることはできますか? '(\ d +)'や '(。* +)'の代わりに '(\ w +)'を試してください – Druzion

+0

形式は(hhmmss)です。 "'あなたのトランザクション参照番号は:0 16123 120000 A1')"です。 strftimeは( '%H%M%S') – Tom

+0

になります。私はエラーを表示するために編集しました – Tom

答えて

0

text (String, Regexp) — Only find elements which contain this text or match this regexp

あなたは(文字列ではなく)正規表現で検索する必要があります。

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

または1つのステップでの検証を行います。

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

@Tomはこの助けをしていますか? –

関連する問題