Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用动态创建的控件进行自动测试?_C#_Visual Studio 2012_Automated Tests_Coded Ui Tests_Microsoft Test Manager - Fatal编程技术网

C# 如何使用动态创建的控件进行自动测试?

C# 如何使用动态创建的控件进行自动测试?,c#,visual-studio-2012,automated-tests,coded-ui-tests,microsoft-test-manager,C#,Visual Studio 2012,Automated Tests,Coded Ui Tests,Microsoft Test Manager,我正在尝试自动化一个web应用程序,它动态地在页面中生成控件,并且web控件的ID从来都不相同 我正在使用Visual Studio 2012 Ultimate、MTM和编码UI测试。该应用程序是使用C#和Visual Studio 2012构建的 问题是,由于控件的ID随着每次新运行而更改,测试总是失败 有没有办法解决这个问题?我对这种情况不是很确定,但我可以给你举个例子,也许你可以用实际情况模拟一下: 示例:与Loadrunner工具(用于性能测试)一样,当它记录用户操作时,它会捕获所有内容

我正在尝试自动化一个web应用程序,它动态地在页面中生成控件,并且web控件的ID从来都不相同

我正在使用Visual Studio 2012 Ultimate、MTM和编码UI测试。该应用程序是使用C#和Visual Studio 2012构建的

问题是,由于控件的ID随着每次新运行而更改,测试总是失败


有没有办法解决这个问题?

我对这种情况不是很确定,但我可以给你举个例子,也许你可以用实际情况模拟一下:

示例:与Loadrunner工具(用于性能测试)一样,当它记录用户操作时,它会捕获所有内容,包括会话id的所有动态值,因此现在如果您重播脚本,它将失败,因为在重新运行时,会话id会因动态性质而更改。 如何处理:我们获取页面源代码并标记动态值出现的左右边界,并将动态值存储在某个变量中,这样下次运行时就不用担心动态值了


这并不让您感到困惑,但类似地,您可以获取页面源代码,标记右字符串和左字符串,将这些标记之间的值存储在一个变量中并处理它。对于标记,可以使用一些正则表达式。。。希望这能有所帮助

我对这种情况不是很确定,但我可以给你举个例子,也许你可以用实际情况模拟一下:

示例:与Loadrunner工具(用于性能测试)一样,当它记录用户操作时,它会捕获所有内容,包括会话id的所有动态值,因此现在如果您重播脚本,它将失败,因为在重新运行时,会话id会因动态性质而更改。 如何处理:我们获取页面源代码并标记动态值出现的左右边界,并将动态值存储在某个变量中,这样下次运行时就不用担心动态值了


这并不让您感到困惑,但类似地,您可以获取页面源代码,标记右字符串和左字符串,将这些标记之间的值存储在一个变量中并处理它。对于标记,可以使用一些正则表达式。。。希望这能有所帮助

如果控件id正在更改,您可以使用任何其他标识符来获取控件,如类名、标记名等。 如果classname也是动态的,那么您可以切换到tagname并获取控件的内部HTML,以确认控件与预期的相同。
然后您就可以处理该问题。

如果控件id正在更改,您可以使用任何其他标识符来获取控件,如类名、标记名等。 如果classname也是动态的,那么您可以切换到tagname并获取控件的内部HTML,以确认控件与预期的相同。
然后你就可以处理这个问题了。

假设你的web应用程序上有一个按钮,你想点击这个按钮。在ID是动态的情况下,我将而不是记录对按钮的单击。您需要动态创建按钮,并动态添加搜索属性。请参阅下面的代码

//创建html按钮的实例作为测试步骤。

HtmlInputButton myButton = new HtmlInputButton(someUIMap.UISomeWindow.UISomeDocument);
myButton.SearchProperties.Add("DisplayText", "Your buttons Display Text");
if(myButton.Exists)
{
   Mouse.Click(myButton);
}
//作为测试步骤,在指定的UI文档中搜索按钮。在这里,我们可以通过DisplayText属性进行搜索。

HtmlInputButton myButton = new HtmlInputButton(someUIMap.UISomeWindow.UISomeDocument);
myButton.SearchProperties.Add("DisplayText", "Your buttons Display Text");
if(myButton.Exists)
{
   Mouse.Click(myButton);
}
//单击按钮(如果存在)。

HtmlInputButton myButton = new HtmlInputButton(someUIMap.UISomeWindow.UISomeDocument);
myButton.SearchProperties.Add("DisplayText", "Your buttons Display Text");
if(myButton.Exists)
{
   Mouse.Click(myButton);
}

我希望这能有所帮助。

假设您的web应用程序上有一个按钮,您想单击该按钮。在ID是动态的情况下,我将而不是记录对按钮的单击。您需要动态创建按钮,并动态添加搜索属性。请参阅下面的代码

//创建html按钮的实例作为测试步骤。

HtmlInputButton myButton = new HtmlInputButton(someUIMap.UISomeWindow.UISomeDocument);
myButton.SearchProperties.Add("DisplayText", "Your buttons Display Text");
if(myButton.Exists)
{
   Mouse.Click(myButton);
}
//作为测试步骤,在指定的UI文档中搜索按钮。在这里,我们可以通过DisplayText属性进行搜索。

HtmlInputButton myButton = new HtmlInputButton(someUIMap.UISomeWindow.UISomeDocument);
myButton.SearchProperties.Add("DisplayText", "Your buttons Display Text");
if(myButton.Exists)
{
   Mouse.Click(myButton);
}
//单击按钮(如果存在)。

HtmlInputButton myButton = new HtmlInputButton(someUIMap.UISomeWindow.UISomeDocument);
myButton.SearchProperties.Add("DisplayText", "Your buttons Display Text");
if(myButton.Exists)
{
   Mouse.Click(myButton);
}

我希望这会有所帮助。

在创建控件时,您不能专门为这些控件指定固定ID吗?编码的UI倾向于使用可以指定的所有内容创建搜索条件。通常,您可以删除不需要的或没有帮助的标准。您可以从搜索条件中删除控件ID。目前我无法为这些控件分配固定ID。我已经向开发团队发送了请求。关于搜索条件,我正在关注它,但它似乎不是很快就能完成的事情。是否可以配置为在每个新录制的步骤中删除这些控件(ID、名称)?在创建控件时,您不能专门为这些控件指定固定ID吗?编码的UI倾向于使用可以指定的所有内容创建搜索条件。通常,您可以删除不需要的或没有帮助的标准。您可以从搜索条件中删除控件ID。目前我无法为这些控件分配固定ID。我已经向开发团队发送了请求。关于搜索条件,我正在关注它,但它似乎不是很快就能完成的事情。是否可以对每个新录制的步骤进行配置以删除它们(ID、名称)?我可以这样做,但问题是我使用devs工具生成脚本来录制步骤,visual studio会自动生成脚本。在脚本生成之后,我必须手动进行更改,以避免使用id和name。如前所述,它起到了作用,但并不低效。我会继续搜索我能够做到这一点,但问题是我使用devs工具生成脚本来记录步骤,而VisualStudio会自动生成脚本。在脚本生成之后,我必须手动进行更改,以避免使用id和name。如前所述,它起到了作用,但并不低效。我会继续搜索,正如前面所说,问题是我使用VS工具来记录步骤