2015-08-28 59 views
1

我正在嘗試爲給定元素編寫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 ')]") 

會拋出我的錯誤的東西。

回答

0

如何像這樣

//span[contains(@class, 'ng-scope') and contains(@class, 'ng-binding') and contains(@class, 'editable')] 

,或者使用CSS選擇簡單:

span.ng-scope.ng-binding.editable 
+0

在選擇器上運氣不好 – ChanChow

+0

它是如何失敗的? – Amey

1

既然你是娛樂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")); 
0

您最初的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選擇器是最終的解決方案。

相關問題