如何在xpath webdriver java中转义反斜杠

时间:2014-04-09 19:37:57

标签: java selenium xpath

我使用带有Selenium web驱动程序Java的xpath来查找使用id的元素,它的id是这样的:

名\ PARAMS \等

在java中表示这个,我正在使用

String id = "\\name\\params\\etc"
driver.findElement(By.xpath("//"+"a"+"[@id='"+id+"']"));

请让我知道如何解决它。

3 个答案:

答案 0 :(得分:2)

在XPath中使用反斜杠不需要做任何特殊操作。反斜杠在XPath中没有特殊含义,因此,没有办法逃避它们(也没有必要)。

你所说的令人困惑。你说ID就像“name \ params \ etc”(开头没有斜线),但是你有"\\name\\params\\etc"(开头斜线)。这是什么?

你试过这个:

String id = "name\\params\\etc"
driver.findElement(By.xpath("//a[@id='" + id + "']"));

答案 1 :(得分:0)

这可能就是你要找的东西:

driver.findElement(By.xpath("//"+"a"+"[@id='"+id.substring(2)+"']"));

或者您可以尝试:

driver.findElement(By.xpath("//"+"a"+"[@id='"+id.replace("\\","\")+"']");

取决于预期的结果 - 你想要逃避反斜杠?

要从定义的id字符串中生成精确的给定id,您可以遵循以下内容:

driver.findElement(By.xpath("//"+"a"+"[@id='"+id.substring(2).replace("\\","\")+"']"));

答案 2 :(得分:0)

你必须使用Xpath吗?您的选择器可以表示为CSS,可能没有相同的转义问题。我没试过这个,所以不能保证它是一个有效的CSS选择器。

String id = "\\name\\params\\etc";
driver.findElement(By.css("a[id='"+id+"']"));

就个人而言,我会使用字符串格式来构造字符串而不是连接,但这是我们个人的选择。

您也可以尝试使用此选择器,但认为它可能会失败,因为“\”不是有效的HTML ID;

String id = "\\name\\params\\etc"
driver.findElement(By.css("a#"+id));