0

私はセレンが初めてで、問題をテストしています。動的に部分的に生成されるハイパーリンク要素の ID を取得しようとしています。セレンでクリックすると、クリックアクションは次のように記録されます。太字の部分は動的に生成されます。ページにはそれらの多くがあり、サイトごとに異なる場合があります(cmsをテストしています)。いずれかをキャプチャしてクリックしたいと思います。これは私がそれ以来やろうとしたことです:

storeAttribute | //button@class onclick="setLocation(javascript{baseUrlSelection()}['/checkout/cart/add/uenc/(a-zA-Z0-9) /product/(0-9) ]'')" | 私のID


エコー | ${myid} |


クリックして待機 | ${myid[0]}

動作しません クリック アクションがセレンに記録されると、私のリンクは次のようになります:

助けください

4

2 に答える 2

1

Selenium IDEを使用していますか?他の開発環境を使用して何かを行う方がおそらくはるかに簡単ですが、本当にループを実行したい場合は 、このページからループするuser-extensionを取得し、次の ようなスクリプトを実行します。

store | 0 | myCurrent
storeEval | var pattern=new RegExp("\\w*http://localhost/mydomaine/index.php/checkout/cart/add\\w*");var i=0;var total=0;while(i<window.document.getElementsByTagName('input').length){if (window.document.getElementsByTagName('input')[i].id.match(pattern)){window.document.getElementsByTagName('input')[i].id = 'testID_' + total;total=total+1;}i=i+1;}total; | myTotal
while | storedVars.myCurrent < storedVars.myTotal
storeAttribute | //input[contains(@id,'testID_${myCurrent}')]@class | myid
echo | ${myid}
clickAndWait | //input[contains(@id,'testID_${myCurrent}')]
store | javascript{storedVars.myCurrent++}
endWhile

これらのボタンのクリックは何をしますか?ページをポストバックしますか、それともそのようなものですか?その場合は、storeEval|を移動する必要があります。var pattern....whileループ内。javascriptが行うことは、RegExパターン(ボタンIDに一致するように変更する必要がある可能性があります)に一致するページ上のすべての入力の名前をシーケンシャルIDに変更して、簡単にループできるようにすることです。利用できる別のパターンがある場合は、それを自由に行ってください。

ここから適応したJavascript

于 2009-04-20T21:35:21.103 に答える
0

xpath contains() 関数を使用してアイテムを見つけることができます。

storeAttribute | //input[contains(@onclick,"setLocation('http://localhost/mydomaine/index.php/checkout/cart/add/uenc/")]@class | myid
echo | ${myid}
clickAndWait | //input[contains(@onclick,"setLocation('http://localhost/mydomaine/index.php/checkout/cart/add/uenc/")]@class

onclick 属性以外で要素を参照することもお勧めします。ID または名前が適切な選択です。

于 2009-04-20T19:00:08.197 に答える