测试场景如下:
我创建了一些用户,例如。用户EF,用户GH等
现在我需要从用户列表中选择这些用户(用户按字母顺序排序,因此新创建的用户并不总是在顶部或底部,具体取决于用户名,它们可以介于两者之间)
现在我的开发人员正在使用unOrder列表来显示用户列表。
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,但问题是新创建的用户的位置可以在任何地方。如果我一直在同一个位置选择用户,xpath对我有好处,但在我的场景中,我需要的不仅仅是xpath。
有什么建议吗?
答案 0 :(得分:2)
使用XPath识别包含文本的标签(例如:'D'),向上移动一级到它的父级(LI
),然后选择其中的input
。
//LABEL[.='D' and @class='reflex-search-result-title']/../INPUT
由于示例中的元素标记是大写的,有时Xpath区分大小写可能是一个问题,请检查How XPath Works in WebDriver以查看适用于您的内容。
答案 1 :(得分:0)
试试这个xpath
//label[contains(text(),'newly created user name')]
示例:如果您创建用户A
driver.findElement(By.xpath("//label[contains(text(),'A')]")).click();
因此,无论您的用户是在哪里创建的,都可以根据文本和HTML标签进行点击。
希望这有助于你
-AJ
答案 2 :(得分:0)
试试这个
<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>
答案 3 :(得分:0)
的XPath:
E - // label [text()='E'] / preceding-sibling :: input
F - // label [text()='F'] / preceding-sibling :: input
G - // label [text()='G'] / preceding-sibling :: input
H - // label [text()='H'] / preceding-sibling :: input
与上面的XPath类似您可以单击任何复选框以创建用户组合
请让我知道我的基本工作与否?