我正在嘗試爲給定元素編寫xpath。如何獲得給定字符串的xpath
<span editable-text="x.script" e-form="capture" class="ng-scope ng-binding editable">www.google.com</span>
我試圖像
$x("//span[contains(concat(' ',@class,' '),' ng-scope ng-binding editable ')]")
會拋出我的錯誤的東西。
我正在嘗試爲給定元素編寫xpath。如何獲得給定字符串的xpath
<span editable-text="x.script" e-form="capture" class="ng-scope ng-binding editable">www.google.com</span>
我試圖像
$x("//span[contains(concat(' ',@class,' '),' ng-scope ng-binding editable ')]")
會拋出我的錯誤的東西。
如何像這樣
//span[contains(@class, 'ng-scope') and contains(@class, 'ng-binding') and contains(@class, 'editable')]
,或者使用CSS選擇簡單:
span.ng-scope.ng-binding.editable
既然你是娛樂CSS選擇,這些怎麼樣?所有這些都應該工作
driver.findElement(By.cssSelector("span[editable-text='x.script']"));
driver.findElement(By.cssSelector("span[e-form='capture']"));
driver.findElement(By.cssSelector("span.ng-scope.ng-binding.editable"));
您最初的XPath應該得到span
元素工作貼,因爲你關閉支架正常工作:
$x("//span[contains(concat(' ',@class,' '),' ng-scope ng-binding editable ')]")
^this was missing
然而,結合的伎倆和concat()
(如this thread和其他一些地方所提到的)旨在匹配單個CSS類。所以,正確的方法適用相同的3 CSS類比賽將是如下(格式化的可讀性):
//span[contains(concat(' ',@class,' '),' ng-scope ')]
[contains(concat(' ',@class,' '),' ng-binding ')]
[contains(concat(' ',@class,' '),' editable ')]
,否則,你的XPath將不能夠找到具有相同的一組CSS的span
元班級順序不同時的班級。無論如何,匹配CSS類對於XPath選擇器來說並不是一個自然的任務。如果可能的話,使用@Amey提到的CSS選擇器是最終的解決方案。
在選擇器上運氣不好 – ChanChow
它是如何失敗的? – Amey