2016-03-31 31 views
0

我想測試一個生成門票的應用程序,所以我必須打開一張門票然後假設它。 我在假設它的部分存在問題,因爲票證是隨隨機ID(票證號碼)打開的。如何在HTML頁面上找到一個隨機ID(黃瓜/水豚)

<button type="submit" id="assign_ticket_6168218" class="btn btn-primary exchange_button"> 
<i class="fa fa-thumbs-up"></i> Assume 

id="assign_ticket_6168218"數目是隨機的,但另一部分則是始終不變的。 所以,我正在創建票據,現在我必須點擊按鈕來承擔它。如何創建票證並存儲票證的編號以便在ID上使用它?

PS:如果這是重要提示,當創建的票,我收到了票的ID的確認消息:

`<div id="messages" class="clearfix"> 
    <div class="success global alert-default form-section"> 
    <ul> 
     <li><i class="fa fa-check"></i>Ticket 6168218 created.</li> 
    </ul> 
    <a href="javascript:;" class="close-alert"><strong>x</strong></a> 
</div> 

`

回答

0

如果你已經已經提取票號變成一個變量(從你上一個問題的SO),然後它只是

click_button("assign_ticket_#{ticket_number}") 
0

你可以使用XPath搜索,而不是一個css找到想要測試的元素。 XPath的支持正則表達式,以便它可以是這樣的

expect(page).to have_xpath("//div[contains(@cid, 'assign_ticket_')]") 

或者,如果你有一個已經創建的數量(在你的情況下,票號),你可以做

expect(page).to have_xpath("//div[contains(@cid, 'assign_ticket_#{ticket_object_number')]") 
+0

我試過這個表格,但沒有奏效。他們嘗試了這個'page.find(:xpath,「// div [contains(@cid,'assign_ticket _#{@ ticket_no [1]}')]」)'。但是我收到了一條未找到的消息。「Capybara :: ElementNotFound:無法找到xpath」// div [contains(@cid,'assign_ticket_6168332')]''。有什麼建議麼? –

+0

您可能是指您的XPath中的@id。此外,CSS還支持開始/結束/包含字符串的匹配屬性 - div [id * =「assign_ticket_」]會像提供的XPath一樣執行包含匹配,並且div [id^=「assign_ticket_」]將執行一次開始 - 在id上匹配 –