2014-05-20 71 views
0

在我所有的精彩幫助下,我想我會要求更多。我有一個屏幕,作爲可點擊鏈接的行的隨機數。我需要點擊這個列表的最後一行。然後找出它是否是正確的。如果不是,則返回,選擇倒數第二行,倒數第三倒,等等。直到找到我想要的或者耗盡行。選擇最後一行。然後也許反覆向前

不幸的是,每一行都有相同的確切名稱。我必須點擊它才能確定它是否是我想要的行。

這裏是行的一個示例:

​​

唯一的區別是在TaskRow後的位數。有任何幫助?

下面是一些代碼以前該行:

<div id="dueToday" class="bpm-task-list-category dijitTitlePane" title="" role="group" widgetid="dueToday" aria-label="Due Today (2)" style="display: block;"> 
<div class="dijitTitlePaneTitle dijitOpen" dojoattachpoint="titleBarNode" dojoattachevent="onclick:_onTitleClick, onkeypress:_onTitleKey"> 
<div class="dijitTitlePaneContentOuter" role="presentation" dojoattachpoint="hideNode"> 
<div class="dijitReset" role="presentation" dojoattachpoint="wipeNode" style="height: auto;"> 
<div id="dueToday_pane" class="dijitTitlePaneContentInner" role="presentation" dojoattachpoint="containerNode" aria-hidden="false"> 
<div> 
<div id="com_ibm_bpm_social_widgets_task_list_TaskRow_2" class="bpm-social-task-row" widgetid="com_ibm_bpm_social_widgets_task_list_TaskRow_2" style="display: block;"> 
<div id="com_ibm_bpm_social_widgets_task_list_TaskRow_1" class="bpm-social-task-row" widgetid="com_ibm_bpm_social_widgets_task_list_TaskRow_1" style="display: block;"> 
<div class="bpm-social-task-box" dojoattachpoint="taskBoxAttach"> 
<div class="bpm-social-task-row-status-img-div"> 
<div class="bpm-social-task-row-data-div" role="listitem" tabindex="0" dojoattachevent="ondijitclick:toggle" dojoattachpoint="focusNode"> 
<div class="bpm-social-task-row-data-header"> 
<span class="bpm-social-task-row-data-subject"> 
<div id="taskrowsubjectcom_ibm_bpm_social_widgets_task_list_TaskRow_1" style="display:none" dojoattachpoint="headerLabel">Task subject</div> 
<a href="javascript:void(0)" role="button" dojoattachpoint="subject" dir="ltr" aria-labelledby="taskrowsubjectcom_ibm_bpm_social_widgets_task_list_TaskRow_1" title="Click to work on the task">Request Full Quotes from Supplier: Supplier One</a> 
</span> 
<div class="bpm-social-drop-down" wairole="button" style="display: block;" tabindex="0" dojoattachpoint="menuButton" role="button" aria-label="Actions" _dijitmenucom_ibm_bpm_social_widgets_actiondropdownmenu_41="1"> 
<span class="bpm-social-task-row-data-due" dojoattachpoint="due"> 
<span class="bpm-social-task-row-data-complete" dojoattachpoint="complete"> 
</div> 

謝謝! 格雷格

+0

什麼行?你的鏈接在一個表格中?請張貼更多的代碼。 – ndugger

+0

我已將代碼添加到原始評論中。 – GregMa

+0

請正確縮進您的代碼。這太難以理解了。這只是一行嗎?所以你的行是div?你很難幫助你。 – ndugger

回答

0

可以使用:last-child選擇這樣做:

a:last-child[aria-labelledby^='taskrowsubject'] 

與更完整的HTML,我能想出這個XPath:

(//a[contains(@aria-labelledby, 'TaskRow')])[last()] 
+0

這就是我最後一個元素,然後我可以做[last() - X],其中X是來自末尾的元素數量。我現在唯一遇到的麻煩是獲得for循環的元素數。 'driver.findElements(By.xpath(「// a [starts-with(@ aria-labelledby,'taskrowsubjectcom_ibm_bpm_social_widgets_task_list _')]」))。size();'總是返回1,即使有19個元素。 – GregMa

+0

@GregMa你的代碼看起來是正確的,你的xpath也是如此。我不確定爲什麼這會返回錯誤的值。 – Richard

+0

啊哈,這是一個計時的事情。它在完成計數之前返回。不幸的是我不得不在那裏睡一覺。但是,隨着它,它返回正確!謝謝! – GregMa