2016-05-01 24 views
0
私はセレンスクリプトに取り組んできた

に基づいて選択する要素: http://live.guru99.com/index.php/mobile.html?dir=asc&order=positionセレン:兄弟要素のテキスト

"Sony Xperia"が、その位置ではないための要素"Add to Compare"を選択します。 私はcssSelectorxpathを試してみましたが、どちらが間違っているのか理解できませんでした。

CSSセレクター:

div.category-products > ul > li:nth-child(n):contains('Sony Xperia') > div > div.actions > ul > li:nth-child(2) > a

のXPath:

//h2/a[@title='Sony Xperia']/ul/li/a[text()='Add to Compare']

注:cssSelectorはChromeで位置決めが、2行目のFirefoxの

答えて

1

内の任意の結果を与えていませんあなたが失った部分

//h2[a[@title='Sony Xperia']] 
/following-sibling::div[@class='actions'] 
/ul/li/a[text()='Add to Compare'] 
+0

の内側になりますがあなたの答え:// h2 [a [@ title = 'Sony Xperia']] 'a'の前に角括弧を使用したので、なぜ '/'にならないのでしょうか? 'a'はh2の属性ではありません。 要素の属性に[]が使用されていると私は間違いないと思います。 –

+0

を角括弧で囲むと、条件付きのタグ「a」を持つh2が見つかります。クラッシュでタグ 'a'を見つけてから見つけます – splash58

+0

ありがとうございました。しかし、cssSelectorでクロムでの作業としても修正できますが、Firefoxでは見つからないことがあります –

0

これはどこでも動作するxpathになります。

のxpath://h2/a[@title='Sony Xperia']/../following-sibling::div[3]/ul/li[2]/a

は、以下の手順を詳細にそれを理解するために参照してください。

ステップ1:要素の固定ノードに移動します。//h2/a[@title='Sony Xperia'](あなたはすでにこれを行っている)

ステップ2:それは兄弟だに移動します。/..

ステップ3を追加することによって、その親に移動しますアクションと/following-sibling::div[3] [アクション]クラスは、現在の場所から3番目の位置にある

ステップ4:アクションノード内で移動し、で届く 『UL』 /ul

S TEP 5:今、「比較対象に追加は、」第2「李」内に存在するので、/li[2]

ステップ6追加:「比較対象に追加」のリンクであるとして、それは「」ので追加/a

関連する問題