【问题标题】:Can I directly add variable to xpath value in selenium?我可以直接将变量添加到 selenium 中的 xpath 值吗?
【发布时间】:2022-01-30 05:31:48
【问题描述】:

从一个表中,我创建了 rowNumber 以在下面的 xpath(inside tr) 表达式中动态地使用它。 但是,当我尝试仅使用不带 + 运算符和双引号的 rowNumber(即 tr[rowNumber])时,它会显示错误。 rowNumber 是 int,那为什么要加双引号和 + 运算符,为什么不能在 tr 里面写变量名。

这是出现错误的代码

driver.findElement(By.xpath("//table[@id='stock']/tbody/tr[rowNumber]/td[1]")).click();

这是正确的代码

driver.findElement(By.xpath("//table[@id='stock']/tbody/tr["+rowNumber+"]/td[1]")).click();

【问题讨论】:

  • 我会假设 rowNumber 是 int 类型?
  • @cruisepandey 是 rowNumber 是 int 类型

标签: java selenium xpath


【解决方案1】:

假设您有这样定义的rowNumber

int rowNumber = 10;

如果您像这样直接在 XPath 中使用 rowNumber:

driver.findElement(By.xpath("//table[@id='stock']/tbody/tr[rowNumber]/td[1]")).click();

这种方法的问题是,您的 xpath 将寻找 rowNumber 的 tr 标签。就像看到td[1]一样。

并且tr[rowNumber] 无效,因为基本的 XPath 表达式是

//tagName[@attributeName='attributeValue']

所以为了解析变量,我们必须使用'" +var_name+ "'

所以是这样的:

driver.findElement(By.xpath("//table[@id='stock']/tbody/tr[' "+rowNumber+" ']/td[1]")).click();

应该工作

【讨论】:

    猜你喜欢
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    相关资源
    最近更新 更多