Java selenium根据索引位置获取li元素并单击复选框
我现在有了这个HTML,它使用Selenium I ant来切换具有给定索引位置(比如1)的li元素,其中表示我要单击spring的切换复选框Java selenium根据索引位置获取li元素并单击复选框,java,selenium,Java,Selenium,我现在有了这个HTML,它使用Selenium I ant来切换具有给定索引位置(比如1)的li元素,其中表示我要单击spring的切换复选框 <ul id="todo-list" data-woven="abc"> <li class="active" data-index="0"> <div class="view"> <input class="toggle" type="checkbox"> <
<ul id="todo-list" data-woven="abc">
<li class="active" data-index="0">
<div class="view">
<input class="toggle" type="checkbox">
<label>Java</label>
<button class="destroy"></button>
</div>
<input class="edit">
</li>
<li class="active" data-index="1">
<div class="view">
<input class="toggle" type="checkbox">
<label>Spring</label>
<button class="destroy"></button>
</div>
<input class="edit">
</li></ul>
现在,如何根据
索引获取li
元素,并单击相应的复选框
您可以使用xpath
查找数据索引=1的元素
driver.findElement(By.xpath("//li[@data-index='1']//input[@class='toggle']"));
或使用css选择器
driver.findElement(By.cssSelector("[data-index='1'] .toggle"));
要单击与祖先
节点索引属性相关的复选框元素,可以使用以下任一选项:
- CSS选择器:
- xpath:
您可以通过@Guy给您的答案直接找到您要查找的元素,如果您确切知道数据索引属性将设置为什么,这将是正确的方法,但您也可以找到li元素的集合,然后在每个元素中执行您需要的操作,如下所示:
var container = driver.findElement(By.id("todo-list"));
var elements = container.findElements(By.tagName("li"));
对于元素,您可以循环遍历每个元素,也可以直接转到所需的元素。谢谢,但我无法根据文本spring进行比较,我只想根据索引选择一个元素,我只是以spring为例。你能告诉我这个的正确语法吗?接下来我想点击它的切换复选框,怎么做,你能告诉我现在我还有一个小问题,一旦我得到了特定的li
元素,如果我想用classdestroy
点击它里面的按钮,怎么做?我在li之后使用xpath方法访问按钮,但我遇到了错误。@学习者用按钮替换输入
,有效地ul#todo list li。活动的[data index='1']按钮
我们能用xpath做同样的过程吗?@learner Effective xpath:/ul[@id='todo-list']//li[@class='active'和@data index='1']//按钮
对于此按钮操作,我收到错误,因为元素不可交互异常
driver.findElement(By.cssSelector("ul#todo-list li.active[data-index='1'] input")).click();
driver.findElement(By.xpath("//ul[@id='todo-list']//li[@class='active' and @data-index='1']//input")).click();
var container = driver.findElement(By.id("todo-list"));
var elements = container.findElements(By.tagName("li"));