单击具有匹配类的所有元素

时间:2017-01-12 09:27:33

标签: selenium firefox xpath selenium-ide

我是Selinium的新手。有一个表(在另一个表格内),我想点击每个<td>click here</td>具有匹配的类值(注意开始和结束之间的文本td将会改变但与匹配目的无关)。我想要匹配的类值是openFrom here我通过//*[contains(concat(" ", normalize-space(@class), " "), " open ")]

了解正确的方法

这似乎有效但只适用于一个随机单元格。如何点击全部?我计划首先完成此步骤并重复该步骤,但值得注意的是,脚本也应该对类值available执行相同的操作,而不仅仅是open是否可以执行逻辑或?

TL; DR我想用<td class="open">...</td>点击所有内容  和
<td class="available">...</td>其中...是示例文本,但会有所不同,但应予以忽略。

4 个答案:

答案 0 :(得分:3)

获取所有元素并将它们存储在List中,然后迭代它们并依次单击按钮。

List<WebElement> list = driver.findElements(By.xpath("//*[contains(concat(" ", normalize-space(@class), " "), " open ")]"));
for(WebElement webelement : list) {
       // webelement Click the button here
}

答案 1 :(得分:0)

要获取所有元素,您应该使用driver.FindElements。确保它使用的是什么,而不是driver.FindElement

答案 2 :(得分:0)

请使用以下XPath

//td[normalize-space(@class)="open" or normalize-space(@class)="available"]

这应该与<td class=" open ">...</td><td class=" available ">...</td>匹配 Picked Available +----------+ +-------+ | item1 | <= | item2 | | item3 | => | item4 | +----------+ | item5 | | ... | + ------+

答案 3 :(得分:0)

使用以下方法可能会对您有所帮助 -

List<WebElement> allElements = driver.findElements(By.tagName("td"));

for(WebElement element:allElements)
{
    if(element.getAttribute("class").contains("open"))
    {
        // manipulate with <td> tag data 
    }
}