是否可以在xpath中使用算术运算符?

时间:2019-07-17 12:13:31

标签: selenium selenium-webdriver xpath

我从表中获取一个xpath,下面是一个示例。

//*[@class='example']//table//tr[1]//td[2].

在我的一种情况下,我想添加带有+1的tr值,它将在运行时将tr计为tr[2]。那么有什么办法可以做到这一点?我已经尝试过了:

//*[@class='example']//table//tr[1+1]//td[2]
//*[@class='example']//table//tr[(1+1)]//td[2]

2 个答案:

答案 0 :(得分:0)

希望这会有所帮助:

代码:

import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

public class TestExp {
    String xpathStr ="//*[@class='example']//table//tr[%1s]//td[2]";
    WebDriver driver = new HtmlUnitDriver();
    public static void main(String[] args) {
        TestExp testExp = new TestExp();
        testExp.clickBtn("1");
        testExp.clickBtn("2");
    }
    public void clickBtn(String index){
        try {
            String element = String.format(xpathStr,index);
            System.out.println(element);
            driver.findElement(By.xpath(element));
        }catch (NoSuchElementException ex){
            System.out.println("Element is not found");
        }
    }
}

结果:

enter image description here

答案 1 :(得分:0)

通常应该记住使用div for division,因为/是保留字符,它会选择root node

演示:

enter image description here

有关更多XPath提示和技巧,请参见XPath Operators & Functions

使用tablesTable类使用HTML HtmlElements framework更容易