如何在xpath webdriver java中避开反斜杠
我使用xpath和Selenium web驱动程序Java来定位使用id的元素,其id如下所示: 名称\params\etc 为了用java表示这一点,我使用如何在xpath webdriver java中避开反斜杠,java,selenium,xpath,Java,Selenium,Xpath,我使用xpath和Selenium web驱动程序Java来定位使用id的元素,其id如下所示: 名称\params\etc 为了用java表示这一点,我使用 String id = "\\name\\params\\etc" driver.findElement(By.xpath("//"+"a"+"[@id='"+id+"']")); 请告诉我如何解决此问题。可能这就是您正在寻找的: driver.findElement(By.xpath("//"+"a"+"[@id='"+id.subs
String id = "\\name\\params\\etc"
driver.findElement(By.xpath("//"+"a"+"[@id='"+id+"']"));
请告诉我如何解决此问题。可能这就是您正在寻找的:
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("\\","\")+"']"));
您必须使用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));
在XPath中使用反斜杠不需要做任何特殊的事情。反斜杠在XPath中没有特殊意义,因此,没有办法逃避它们(也没有必要) 你所说的令人困惑。您说ID类似于“name\params\etc”(开头没有斜杠),但是您有
“\\name\\params\\etc”
(开头有斜杠)。是哪一个
你试过这个吗:
String id = "name\\params\\etc"
driver.findElement(By.xpath("//a[@id='" + id + "']"));
为什么元素有这样一个id:
name\params\etc
?这太奇怪了。你有这个网页的控制权,也许可以改变它吗?不,我只需要用selenium测试它,我不能改变它。好的,它是一个无效的html id属性,所以它应该被修复。将此链接转发给生成代码的开发人员:+1。元素在内部框架中,我正在检查主体中的元素。顺便说一句,谢谢你的帮助