2014-05-20 104 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