2016-09-19 67 views
1

我試圖創建在C#中硒適當XPATH語法的網頁上提取的訂單號。以下是我試圖抓取屏幕截圖中顯示的訂單號碼。所有這些都對我產生了影響。C#硒從跨度提取數據與部分ID

var result = driver.FindElement(By.XPath("//span[@id^='order-number-'")).Text; 
var result = driver.FindElement(By.XPath("//div[@id='a-column a-span7']/h5")).Text; 
var result = driver.FindElement(By.XPath("//div[@id='a-column a-span7']/span[@class='a-text-bold']")).Text; 

下面是Chrome的檢查。我試圖搶訂單號,但它不會永遠是一樣的,所以我不能硬編碼跨度ID。

enter image description here

+0

我不能完全肯定,但你嘗試過這樣的事情:在 ID * =「訂單號」你XPath的? – cstopher

回答

2

driver.FindElement(By.XPath("//span[@id^='order-number-'"))肯定會匹配什麼。另外,你沒有關閉方括號。

相反,如果你想有一個更短,更可讀的版本,使用CSS選擇器:

driver.FindElement(By.CssSelector("span[id^=order-number]")) 

這裏^=手段「打頭」。


如果您希望繼續使用的XPath,使用starts-with() function

driver.FindElement(By.XPath("//span[starts-with(@id, 'order-number-')]")) 
+0

這很好。謝謝你,先生。 VAR結果= driver.FindElement(By.CssSelector( 「跨度[ID^=訂單編號]」))文本。 – Roro

0

你可以試試這個:

var result = driver.FindElement(By.XPath("//span[contains(@id, 'order-number-')]")).Text; 

它採用 「包含」 在跨度ID。讓我知道這是否有幫助。因爲^=不是XPath語言的有效操作