0

約30個のスクリプト化されたテストケース(各テストケースはスクリプトです)を連続して実行していますが、指定された要素を識別できない、要素が存在しないなどの失敗が頻繁に発生します。

要素が表示されるのを待つために、すでに多くの異なるメソッドを追加しました。時々それが明らかにそこにあるとき、私はセレンが要素のIDを見つけるのに苦労していると思いますか?

私はいくつかを含めました

do{
    if(selenium.isElementPresent("id=resultTable_0_0"){
    selenium.click("viewResultForm:refresh_button");
    }
}while (!selenium.isElementPresent("id=resultTable_0_0"));

if(selenium.isElementPresent("id=resultTable_0_0"))
        selenium.isVisible("id=resultTable_0_0");

if(selenium.isElementPresent("id=resultTable_0_0_1_to"))
    selenium.click("resultTable_0_0_1_to");

何かをする前に、要素が存在するかどうかを常にチェックします。これはおそらくパフォーマンスに大きな影響を与えますが、今のところ、スクリプトをエラーなしで完全に堅牢に実行したいだけです。私はこのコードを持っています:

do{
    if(selenium.isElementPresent("id=resultTable_0_0")){
    selenium.click("viewResultForm:refresh_button");
    }
}while (!selenium.isElementPresent("id=resultTable_0_0"));

        if(selenium.isElementPresent("id=resultTable_0_0"))
            selenium.isVisible("id=resultTable_0_0");
        if(selenium.isElementPresent("id=viewResultForm:currentDetailViewType"))
            selenium.isVisible("id=viewResultForm:currentDetailViewType");
        if(selenium.isElementPresent("id=viewResultForm:currentSearchDateType"))
            selenium.isVisible("id=viewResultForm:currentSearchDateType");
        if(selenium.isElementPresent("id=viewResultForm:currentLegalEntity"))
            selenium.isVisible("id=viewResultForm:currentLegalEntity");
        if(selenium.isElementPresent("id=viewResultForm:currentRollupBy"))
            selenium.isVisible("id=viewResultForm:currentRollupBy");
        if(selenium.isElementPresent("id=viewResultForm:currentSecurityAltId"))
            selenium.isVisible("id=viewResultForm:currentSecurityAltId");
        if(selenium.isElementPresent("id=viewResultForm:currentSecurityAltIdType"))
            selenium.isVisible("id=viewResultForm:currentSecurityAltIdType");
        if(selenium.isElementPresent("id=viewResultForm:currentDepoViewType"))
            selenium.isVisible("id=viewResultForm:currentDepoViewType");
        if(selenium.isElementPresent("id=viewResultForm:currentBusinessDate"))
            selenium.isVisible("id=viewResultForm:currentBusinessDate");

        System.out.println("Success T13001");
        selenium.stop(); 

これでもエラーになります!!! そして、それはselenium.stopに到達し、成功を「偽造」するために失敗することはありません。スクリプトの堅牢性を強化するために何ができますか?どんな助けでもいただければ幸いです。

IE8でSelenium2.20.0を使用しています。

4

1 に答える 1

1

あなたの質問によると、ロケーターのIDが見つからないという問題がある場合は、 cssやxpathなどの他のロケーターを使用してみてください。

新しいページに移動したり、URLを開いたりするたびに、 selenium.waitforpagetoloadを適用します。

ajaxベースのアプリケーションで作業している場合は、selenium.waitforconditionが気になります。

何らかの操作の後にロケーターが表示されるまでに時間がかかると思われる場合は、それらの要素を適切に待機してください。

于 2012-11-08T17:44:35.780 に答える