2

ソフトウェア名 Selenium (web rat) を使用して、ユーザーとブラウザーの対話をシミュレートしようとしています

たとえば、「ジョン」という名前のユーザー名フィールドを入力しようとしています

ただし、「username textbox」の「id」は username_947232、username_8237 です。

username_[乱数] の形式

私の構文は次のとおりです。

//*[contains(@id="username_(/\d+/)")]

しかし、それは機能していません。

ご提案ありがとうございます。

4

3 に答える 3

3

使用:

//*[starts-with(@id, 'username_')
  and 
   floor(substring-after(@id, 'username_')) = substring-after(@id, 'username_')
    ]

説明:

この式は、id属性の文字列値が文字列で始まり、"username_"この文字列の残りの部分 (開始の の後"username_") が整数である要素を選択します。

$stringここでは、 が整数を表す場合にのみ、次の式が真であるという事実を使用します。

floor($string) = $string

XSLT ベースの検証:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/">
     <xsl:copy-of select=
      "//*[starts-with(@id, 'username_')
  and
   floor(substring-after(@id, 'username_')) = substring-after(@id, 'username_')
    ]
    "/>
 </xsl:template>
</xsl:stylesheet>

この変換がこの XML ドキュメントに適用されると、次のようになります

<t>
 <user id="username_Xyz"/>
 <user id="username_Xyz123"/>
 <user id="username_123Xyz"/>
 <user id="username_123Xyz456"/>
 <user id="username_2015"/>
</t>

Xpath 式が評価され、この評価から選択されたノードが出力にコピーされます。

<user id="username_2015"/>

: この質問に対する他の 2 つの回答でuserは、上記のドキュメントの 5 つの要素すべてが選択されますが、これはもちろん正しくありません。

于 2012-10-26T15:13:47.127 に答える
0

使用するstarts-with

//*[starts-with(@id, "username_")]
于 2012-10-26T08:28:51.650 に答える
-1

あなたはただ使うことができるはずです

//*[contains(@id, 'username_')]

最後に数字以外の可能性がある場合、これは最適ではないかもしれません。

于 2012-10-26T06:51:50.717 に答える