Visual studio 2013 在VisualStudio中查找网页上的按钮以查找其内部文本字符串的一部分

Visual studio 2013 在VisualStudio中查找网页上的按钮以查找其内部文本字符串的一部分,visual-studio-2013,coded-ui-tests,Visual Studio 2013,Coded Ui Tests,我正在为一个网站编写自动测试。在网站上有一个按钮,将有内部文本“全部打开”+四个随机数字。例如:“所有Open2957”。是否有办法仅使用字符串的“全部打开”部分来查找按钮 这不起作用,因为字符串缺少最后四位数字: HtmlSpan uIAllOpenPane = new HtmlSpan(); uIAllOpenPane.SearchProperties[HtmlDiv.PropertyNames.InnerText] = "All Open"; 简单的答案是使用PropertyExpres

我正在为一个网站编写自动测试。在网站上有一个按钮,将有内部文本“全部打开”+四个随机数字。例如:“所有Open2957”。是否有办法仅使用字符串的“全部打开”部分来查找按钮

这不起作用,因为字符串缺少最后四位数字:

HtmlSpan uIAllOpenPane = new HtmlSpan();
uIAllOpenPane.SearchProperties[HtmlDiv.PropertyNames.InnerText] = "All Open";

简单的答案是使用
PropertyExpressionOperator.Contains
而不是
PropertyExpressionOperator.EqualTo
比较器并搜索所需的文本

对于记录的测试,请在UI映射编辑器中找到该控件并查看其属性面板。单击“搜索属性”字段,然后单击省略号。出现的窗口允许更改比较器和所需文本

对于手动编码测试,使用以下形式的代码:

uIAllOpenPane.SearchProperties.Add(HtmlDiv.PropertyNames.InnerText,
    "All Open",
    PropertyExpressionOperator.Contains);
根据问题中使用的数组索引样式(即带有
[
]
),内部调用
搜索属性。添加(…)
,但该样式没有变化,无法指定
…包含
,因此显式调用
…添加(…)

检查此项

 Button allOpenButton =  (Button)BrowserWindow.ExecuteScript("allOpenButton = function(){var found; $('input[type=\"button\"]').each(function(){ if($(this).val().indexOf('All Open') > -1){ found = $(this);};}); return found;}; return allOpenButton();");

当试图定位控制器时,我只得到了
FailedOperationHiddenc‌​OntroleException
。最终,我能够找到包含我试图定位的控制器的DIV容器,而不是直接查找控制器。找到容器后,我可以使用

HtmlSpan uIAllOpenPane = new HtmlSpan(container);
uIAllOpenPane.SearchProperties.Add(HtmlDiv.PropertyNames.InnerText, "All Open",
PropertyExpressionOperator.Contains);

当您每次遇到控制器时,字符串的一部分被随机分配时,@AdrianHHH中的代码帮助解决了这个问题。

我尝试了您对录制的测试和手工编码的测试进行编辑。测试似乎根本找不到按钮,即使这应该可以工作。@hardyfelix可能有其他一些搜索属性阻止找到按钮。编码的UI记录器为搜索添加了许多搜索属性,如果出现问题,可以删除许多属性。当应用程序更改为在屏幕上显示更多项目时,或者当应用程序的多个副本正在运行时,它会添加很多项目来尝试并确保找到正确的项目。检查其他搜索属性并查看是否应删除任何属性。无论我搜索什么,我都会得到Microsoft.VisualStudio.TestTools.UITest.Extension.FailedOperationHiddenControlException:您知道有关此异常的任何信息吗?我已尝试将搜索属性的数量限制在最低限度,但它仍然无法在该特定页面上找到一个按钮。@hardyfelix有许多网页在该例外情况下寻求帮助和许多好的建议,但您最初的问题询问了其他问题。如果你真正的问题是关于这个例外,那么你应该在问题中说明。是的,你是对的。我认为我的问题与我不能搜索字符串的一部分有关。但事实上,在那个特定的页面上没有任何东西是可以搜索的,所以我面临着另一个问题。我将在别处寻找这个例外的解决办法