2017-09-12 169 views
0

嘗試使用硒c sharp(哈希標記不工作)查找元素時遇到小問題。無法識別硒中的Xpath元素

我有這樣的元素:

<div class="confirmation-price-summary__price-label underline"> 
    Travel essentials 
</div> 

我也有另一種元素是完全一樣的,但與它相關聯的不同文本:

<div class="confirmation-price-summary__price-label underline"> 
    Transfer 
</div> 

我想找到一個包含一個'旅行必備品',所以我寫下面的代碼試試看:

public static By TravelEssentialsBasketLink => By.XPath("//div[text()[contains(.,'Travel essentials')] and [@class='confirmation-price-summary__price-label underline']"); 

然而,它表明它不是一個有效的xpath,我怎樣才能正確地檢索這個元素?

感謝

+0

做你需要獲得或可能獲得所有這些元素,或者你只對1元素有興趣? –

+0

@socalcheesehead我將需要在我的測試中的某個點抓取每個元素 – BruceyBandit

回答

1
By.XPath("//div[contains(text(),'Travel essentials') and @class='confirmation-price-summary__price-label underline']"); 

這應該做的伎倆。

+0

嗨,有可能還有其他div標籤包含「旅行必備」,因爲它是文本,有沒有辦法將其定位到類確保它完全正確? – BruceyBandit

+0

是的,現在看我的答案,我編輯它。希望能幫助到你。 – acikojevic

0

嘗試下面的XPath:

By.XPath("//div[contains(text(),'Travel essentials') and @class='confirmation-price-summary__price-label underline']") 

這將作爲你的XPath你是不是文本檢查正常。

要檢查XPath是否返回了正確的元素,或者不按照以下步驟操作。

  1. 在Chrome瀏覽器中打開頁面。
  2. 使用F12打開開發人員工具。
  3. 現在打開控制檯並鍵入下面的命令。您將獲得與相應的XPath關聯的元素。

    $x("//div[contains(text(),'Travel essentials') and @class='confirmation-price-summary__price-label underline']") 
    
  4. 該命令應返回寫你可以用這個驗證的XPath

1

如果你會需要它們都在某個點的代碼與XPath.Before關聯的元素或者想操作在整個集合,你可以抓住他們所有,並把它們放入一個列表:

List<WebElements> elements = driver.findElements(By.Xpath("//div[@class='confirmation-price-summary__price-label underline']"); 

for(WebElement element : elements) { 
    String text = element.getText(); 
    if(text.equals("blah")) 
     do_whatever(); 
} 
0

,同時具有partia請使用以下XPath的確切文字驗證l或滿級屬性:

By.XPath("//div[text()='Travel essentials' and contains(@class,'confirmation-price-summary__price-label')]") 
0

我認爲你是相當具有非常接近:

public static By TravelEssentialsBasketLink => By.XPath("//div[text()[contains(.,'Travel essentials')] and [@class='confirmation-price-summary__price-label underline']"); 

在這裏,我會建議你做一個小更新內容如下:

public static By TravelEssentialsBasketLink => By.XPath("//div[contains(.,'Travel essentials') and (@class='confirmation-price-summary__price-label underline')]");