2016-09-01 72 views
0

我有一張表,我需要選擇排序升序和降序按鈕。在HTML看起來像這樣選擇表上的排序按鈕

<table id="results" class="list-table" width="100%" cellspacing="0" cellpadding="0"> 
<tbody> 
<tr class="header-row "> 
<th> 
<th id="field_app_job_title" class="app_job_title "> 
<th id="field_app_full_name" class="app_full_name "> 
<th id="field_app_individual_workflow_states" class="v0_workflow_state_definition_id_sort "> 
<th id="field_app_workflow_state_entrance_reason" class="v0_workflow_state_entrance_reason_sort "> 
<span class="controls"> 
<span class="move_left"></span> 
<span class="move_right" style="display: none;"></span> 
<span class="sort_asc"></span> 
<span class="sort_desc"></span> 
<span class="remove"></span> 
</span> 
Workflow State Entrance Reason 
</th> 
<th class="action-menu"></th> 
</tr> 

我曾嘗試以下:

within_table 'results' do 
    find('Workflow State Entrance Reason').click_link('sort_asc') 
end 

within_table 'results' do 
    find('v0_workflow_state_entrance_reason_sort').click_link('sort_asc') 
end 

即使這樣,但沒有一個位於該元件爲止。

within_table 'results' do 
    ('input[id^="field_app_workflow_state_entrance_reason"]').click_link('sort_asc') 
end 

建議?

回答

0

謝謝你的原因是什麼每個人都輸入併爲我遲到的迴應感到抱歉。你的回答讓我走上了正確的道路,我能夠解決這個問題。一個問題是我沒有意識到,只有當鼠標懸停在列上時,排序元素纔會出現。

within_table 'results' do 
    find('#field_app_workflow_state_entrance_reason', text: 'Workflow State Entrance Reason').hover 
end 

這然後給了我在那裏得到這個錯誤

水豚::騷靈:: MouseEventFailed新的錯誤:在 座標[719.5,438]射擊點擊失敗。 Poltergeist使用CSS選擇器'html body#job_applications.search div#container section#main div#main-content section.details div.subpage section#search_results table#results.list-table tbody tr.header-row檢測到另一個元素 th#field_app_workflow_state_entrance_reason.v0_workflow_state_entrance_reason_sort span.controls'在這個位置。它可能與您嘗試與之交互的元素重疊。如果您不關心重疊 元素,請嘗試使用node.trigger('click')。

對node.trigger和我能夠點擊這樣的元素沒有得到錯誤的一點研究。

within_table 'results' do 
    find('.v0_workflow_state_entrance_reason_sort span.controls .sort_asc').trigger("click") 
end 

我不確定這是不是一個好主意,但它似乎現在起作用。

0

您應該使用CSS選擇器到find該元素,然後單擊它。使用這樣的事情:

find(".sort_asc").click 

您也應該檢查你的HTML代碼,這似乎是無效的(你nasted th選擇)。

+0

不幸的是,在每列中都有這些sort_asc的倍數。我有6或7列,這是每個頂部。所以試圖看看如何才能從標題爲「工作流程狀態入口原因」的列中選擇那些。感謝HTML代碼的正面評價。我在QA,不寫這部分。 –

+0

你的HTML代碼是無效的,但是如果你在每個'th'列中都有'span'元素,那麼你可以使用'find(「。class-of-thsort_asc」)。click'甚至'find(「 ...「,文本:」工作流程...「),點擊」 – smefju

0

鑑於你的HTML(即希望得到固定)以下應該點擊你想點擊

within_table 'results' do 
    find('.v0_workflow_state_entrance_reason_sort .sort_asc').click 
end 

你的企圖沒有奏效低於

within_table 'results' do 
    # find with no selector type specified takes a CSS selector 
    # not random text and there is no link (<a> element in your html) 
    find('Workflow State Entrance Reason').click_link('sort_asc')   
end 

within_table 'results' do 
    # v0_workflow... is not the correct CSS selector (unless that is the tag_name of the element you're looking for) and there is no link in your html 
    find('v0_workflow_state_entrance_reason_sort').click_link('sort_asc') 
end 

within_table 'results' do 
    #there is no link in your html 
    find('input[id^="field_app_workflow_state_entrance_reason"]').click_link('sort_asc') 
end