我使用硒網絡驅動程序的Java中的XPath使用ID來定位一個元素,它的id是這樣的:如何在XPath中逃脫反斜線的webdriver的Java
名\ PARAMS \等
表示此在java中,我正在使用
String id = "\\name\\params\\etc"
driver.findElement(By.xpath("//"+"a"+"[@id='"+id+"']"));
請讓我知道如何解決它。
我使用硒網絡驅動程序的Java中的XPath使用ID來定位一個元素,它的id是這樣的:如何在XPath中逃脫反斜線的webdriver的Java
名\ PARAMS \等
表示此在java中,我正在使用
String id = "\\name\\params\\etc"
driver.findElement(By.xpath("//"+"a"+"[@id='"+id+"']"));
請讓我知道如何解決它。
您不需要在XPath中使用任何特殊的反斜槓。反斜槓在XPath中沒有特殊含義,因此無法逃避它們(也不需要)。
你說過的話很混亂。你說這些ID就像「name \ params \ etc」(開頭沒有斜線),但是你有"\\name\\params\\etc"
(斜線在開頭)。這是什麼?
你有沒有嘗試過這樣的:
String id = "name\\params\\etc"
driver.findElement(By.xpath("//a[@id='" + 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標識;
String id = "\\name\\params\\etc"
driver.findElement(By.css("a#"+id));
爲什麼元素有這樣一個id:'名\ PARAMS \ etc'?這太奇怪了。你有這個網頁的控制權,也許可以改變? – donfuxx
不,我只是需要使用硒進行測試,我無法更改它 –
嗯,它是一個無效的html id屬性,所以它應該被修復。將此鏈接轉發給製作代碼的開發人員:http://stackoverflow.com/a/79022/2399024 – donfuxx