2016-07-20 3 views
0

ページ内のXpathを検索しようとしています。 ここに私のコードです。 「@content」を使用してエラーにbehatセレンでXパスを取得する方法

invalid selector: The result of the xpath expression "//html//meta[@name ="description"]/@content" is: [object Attr]. It should be an element. (Session info: chrome=51.0.2704.103) (Driver info: chromedriver=2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4),platform=Mac OS X 10.10.5 x86_64) (WARNING: The server did not provide any stacktrace information)

答えて

1

を与える

$session = $this->getSession(); 
    $found = $session->getPage()->findAll('xpath', '//meta[@name ="description"]/@content'); 
    if (is_null($found)) { 
     throw new \Exception(sprintf("Could not find meta %s='%s' with '%s'",)); 
    } 

はBehatは、XPathに翻訳されたときに、これは有効なセレクタを返さない可能性があります、属性の内容を返します。

あなたはその属性を指定する必要がある場合は、このようにそれを使用する必要があります。

//meta[@name ="description"][@content] 

ものfindAllが配列ではなく、単一の要素を返し、あなたがセレクタに一致する最初の要素を見つけるために見つけるに使用できることに注意してください与えられた。

属性の値を取得したり、テキストを取得する必要がある場合は、getAttribute( 'attribute_name')やgetText()などのメソッドを使用できます。

$found->getAttribute('name'); 

または

$found->getText(); 
+0

は、その後、新しいエラーを取得:

あなたのケースでは、あなたのようなものを持つことができます。 セレクタが無効です:次のエラーのため、xpath式// html // meta [@name = "description"] @ contentを持つ要素を見つけることができません: SyntaxError: 'Document'で 'evaluate'を実行できませんでした: string '// html // meta [@name = "description"] @ content'は有効なXPath式ではありません。 – mks

+0

私が与えた正確なセレクタをコピーし、角括弧で囲まれた@contentを使って – lauda

+0

うまくいったoopsは、そのxpathで値を得る方法がありますか? – mks

関連する問題