我使用带有Selenium web驱动程序Java的xpath来查找使用id的元素,它的id是这样的:
名\ PARAMS \等
在java中表示这个,我正在使用
String id = "\\name\\params\\etc"
driver.findElement(By.xpath("//"+"a"+"[@id='"+id+"']"));
请让我知道如何解决它。
答案 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));