2016-10-04 6 views
0

私はAUTのレコードを検索するために使用できる汎用メソッドを作成しました。ループ内でメソッドを実行中に、コード化されたUIでオブジェクトの識別に失敗しました

今、コードを複数回実行する必要があるというシナリオがあります。だから私はループを作成し、実行しようとしました。最初の反復は問題なく実行され、ページは閉じられます。ページを再オープンすると、すべてのコントロールがロードされますが、オブジェクトの識別は2回目の繰り返しで失敗しました。以下のようにHtmlEditオブジェクトを初期化する

:2回目の繰り返しの間に「MEDIT」ボックスにテキストを入力しようとしているときに

HtmlEdit medit = new HtmlEdit(objSearchPage);  
medit.SearchProperties.Add("Name", "1$SearchText", PropertyExpressionOperator.Contains);  
medit.SearchProperties[HtmlEdit.PropertyNames.TagName] = "INPUT";  
medit.SearchProperties[HtmlEdit.PropertyNames.ControlType] = "Edit"; 

再生に失敗しました。最初の反復成功:medit.Text = searchItem;

+0

問題はコードなしで発生しますか?コードに関する質問でコードを投稿する必要があるので、私は尋ねます。質問がコード化されたUIに関するもので、コードが関係がない場合は、それを明確にしてください。 –

+0

以下のようにHtmlEditオブジェクトを初期化します。HtmlEdit medit = new HtmlEdit(objSearchPage); medit.SearchProperties.Add( "Name"、 "1 $ SearchText"、PropertyExpressionOperator.Contains); medit.SearchProperties [HtmlEdit.PropertyNames.TagName] = "INPUT"; medit.SearchProperties [HtmlEdit.PropertyNames.ControlType] = "編集"; 2回目の反復中に「medit」ボックスにテキストを入力しようとしているときに、再生に失敗しました。最初の反復は成功です - medit.Text = searchItem; – SSNair

+0

ループ内の["control.Exists"の可能な複製は、初めてコード化されたuiで2回目ではなく動作します](http://stackoverflow.com/questions/27526163/control-exists-within-a-loopworks - 第1回目および第2回目ではなく、第2回目である) – AdrianHHH

答えて

0

繰り返し中にブラウザウィンドウを開いたり閉じたりしている場合は、ループに初期化コードを含めるか、AlwaysSearch設定を使用する必要があります。

foreach(var thing in thingsToDo) 
{ 
    HtmlEdit medit = new HtmlEdit(objSearchPage);  
    medit.SearchProperties.Add("Name", "1$SearchText", PropertyExpressionOperator.Contains);  
    medit.SearchProperties[HtmlEdit.PropertyNames.TagName] = "INPUT";  
    medit.SearchProperties[HtmlEdit.PropertyNames.ControlType] = "Edit"; 

    // use medit now and it will work 
} 

または

HtmlEdit medit = new HtmlEdit(objSearchPage);  
medit.SearchProperties.Add("Name", "1$SearchText", PropertyExpressionOperator.Contains);  
medit.SearchProperties[HtmlEdit.PropertyNames.TagName] = "INPUT";  
medit.SearchProperties[HtmlEdit.PropertyNames.ControlType] = "Edit"; 

// I'm not sure this will work because the browser window is different 
medit.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch); 
0

@MPavlakはお金の近くにあります。私たちが忘れているかもしれないと思うのは、あなたも親コントロール(objSearchPage)を再初期化する必要があるということです。それが存在し、瞑想を検索する前に見つかっていることを確認してください。

foreach(var thing in thingsToDo) 
{ 
    var objSearchPage = new UITestControl(); //you can also just reinitialize here if it's been previously declared. 
    objSearchPage.SearchProperties.Add("yourPropertyHere"); 

    HtmlEdit medit = new HtmlEdit(objSearchPage);  
    medit.SearchProperties.Add("Name", "1$SearchText", PropertyExpressionOperator.Contains);  
    medit.SearchProperties[HtmlEdit.PropertyNames.TagName] = "INPUT";  
    medit.SearchProperties[HtmlEdit.PropertyNames.ControlType] = "Edit"; 
} 
関連する問題