1
page.getByXPath("//*[@href='http://www.example.com/index.do/abc/1_*'");

文字をエスケープする必要がありますか?

次のパターンを持つページ上のすべてのahrefリンクを取得しようとしています。

http://www.example.com/index.do/abc/1_

したがって、これらはすべて取得する必要があります。

http://www.example.com/index.do/abc/1_asdf-asdfasdf
http://www.example.com/index.do/abc/1_223
http://www.example.com/index.do/abc/1_as.php
http://www.example.com/index.do/abc/1_2222233
4

3 に答える 3

4

XPathにはワイルドカードはありません。代わりに次のようなものが必要です。

page.getByXPath("//*[contains(@href,'http://www.example.com/index.do/abc/1_')]");

これは関数に依存していcontainsます。starts-with次の関数を使用することもできます。

//*[starts-with(@href,'http://www.example.com/index.do/abc/1_')]
于 2010-01-05T20:08:58.930 に答える
0

XPath 1.0を使用している場合、その方法でワイルドカード(または正規表現)の一致を行うことはできません。(2.0にアップグレードするとそれが可能になる場合があります)

この場合、プレフィックスに対して「含む」テストを実行することをお勧めします

// a [contains(@href、' http://www.example.com/index.do/abc/1_ ')]

(注:選択をタグのみに制限しました)

于 2010-01-05T20:11:36.600 に答える
0

XPathライブラリが以下をサポートstarts-with(string1,string2)および使用しているかどうかを確認します。

page.getByXPath("//*[starts-with(@href, 'http://www.example.com/index.do/abc/1_')");

また、に置き換え*られませaんか?

于 2010-01-05T20:11:48.143 に答える