2016-09-19 7 views
1

Webページの注文番号を抽出するために、C#Seleniumで適切なXPATH構文を作成しようとしています。ここでは、スクリーンショットに表示された注文番号を取得するために私が遠くに試みたことがあります。これらのすべてが私のことを忘れてしまった。C#Selenium Extract部分的な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

^=はXPath言語の有効な演算子ではないため、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 result = driver.FindElement(By.CssSelector( "span [id^= order-number]"))。テキスト。 – Roro

0

あなたはこれを試してみることができます。

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

それはスパンIDに "含まれている" 使用しています。これが役に立ったら教えてください。

関連する問題