测试场景是这样的:
我创建了一些用户。用户EF、用户GH等
现在我需要从用户列表中选择这些用户(用户按字母顺序排序,因此新创建的用户不总是在顶部或底部,取决于用户名,它们可以介于两者之间)
现在我的开发人员正在使用unOrder list来显示用户列表。
HTML代码,如下所示:
<DIV class="reflex-ssl-result-list ">
<UL>
<LI><INPUT value="" type=checkbox><LABEL class=reflex-search-result-title></LABEL>
<LI><INPUT value="" type=checkbox><LABEL class=reflex-search-result-title>A</LABEL>
<LI><INPUT value="" type=checkbox><LABEL class=reflex-search-result-title>B</LABEL>
<LI><INPUT value="" type=checkbox><LABEL class=reflex-search-result-title>C</LABEL>
<LI><INPUT value="" type=checkbox><LABEL class=reflex-search-result-title>D</LABEL>
<LI><INPUT value="" type=checkbox><LABEL class=reflex-search-result-title>E</LABEL>
<LI><INPUT value="" type=checkbox><LABEL class=reflex-search-result-title>F</LABEL>
<LI><INPUT value="" type=checkbox><LABEL class=reflex-search-result-title>G</LABEL>
</UL>
</DIV>C和D是新创建的用户,这是我需要选择的用户。我该怎么做呢?我尝试过xpath,但问题是新创建的用户的位置可以在任何位置。如果我一直在同一位置选择user,那么xpath对我来说很好,但在我的场景中,我需要的不仅仅是xpath。
有什么建议吗?
发布于 2013-11-29 09:35:23
使用XPath标识包含文本的标签(例如:'D'),上一级到其父标签( LI),然后在其中选择input。
//LABEL[.='D' and @class='reflex-search-result-title']/../INPUT由于您的示例中的元素标记是大写的,并且有时区分Xpath大小写可能是一个问题,因此请检查How XPath Works in WebDriver以了解哪些内容适用于您。
发布于 2013-11-29 13:01:10
尝试此xpath
//label[contains(text(),'newly created user name')]示例:如果您创建用户A
driver.findElement(By.xpath("//label[contains(text(),'A')]")).click();因此,无论您的用户是在哪里创建的,您都可以基于文本和HTML标签单击。
希望这能对你有所帮助
-Aj
发布于 2013-12-10 05:26:07
尝尝这个
<tr>
<td>storeXpathCount</td>
<td>//input[@name='NAME']</td>
<td>total</td>
</tr>
<tr>
<td>storeEval</td>
<td>Math.floor(Math.random() * ${total} )+1</td>
<td>index</td>
</tr>
<tr>
<td>click</td>
<td>xpath=(//input[@id='NAME'])[${index}]</td>
<td></td>
</tr>https://stackoverflow.com/questions/20275672
复制相似问题