Ranorex无法识别独特的元素?

时间:2013-02-01 08:11:11

标签: ui-automation ranorex

现有的应用程序有一个html表,在body标签内,有多个同名的td标签

Ranorex无法将所有这些文件都存储到存储库中,因为它们都具有相同的XPath。

如何将这些项添加到存储库?

我尝试进行录制,自动创建的存储库只包含一个存储库项目..

注意:我无法对应用程序进行任何更改

4 个答案:

答案 0 :(得分:1)

使用更多信息会更容易,例如,当您将任何项目添加到存储库时,您所提供的Ranorex XPath是什么?

此外,除了上面提到的Max之外,你将ENTIRE表添加到存储库然后找到后代注意:不是孩子,因为孩子只能从下一个设置中找到元素,所以可能找不到你的内容。一直在寻找(看起来像这样):

foreach(Ranorex.TdTag tags in repo.testWebsite.tdTable.FindDescendants<Ranorex.TdTag>())
{
if(tags.TagValue.contains("<tagname>"));
{
tags.<DOSOMETHING>();
}
}

请注意,这应该遍历所有标记并为它们执行相同的操作。

除此之外,尽管可能在存储库中找到所有标记并以相同的方式显示,但是它们中有多个,因此可以将其推入Rooted Folder,将ENTIRE表添加为根,然后将td标记添加为已排列的项目。

.//div[#'pagecontent']/div[1]/div[2]/div/div/ul/form[2]/li/input[@name='Submit']

上面的例子有多个/ div部分,所以要确定要在[#],div [1]或div [2]中搜索哪一个,因为这些是你来的第一个或第二个/ div标签跨越。 tdTags可以以相同的方式工作,因为你可以标记tdtag [1],[2],[3]等,但它可能值得一试,因为它可以让你创建你的存储库项目。重新开始。

我自己很陌生,所以假设可能是错误的。

编辑等等,Max回答了他自己的问题吗?哈哈...

答案 1 :(得分:0)

您必须创建一个自定义UI自动化提供程序,它将公开这些元素。 有关详细信息,请查看System.Windows.Automation.Provider命名空间。

答案 2 :(得分:0)

以下是: 找到父元素,并在代码中使用find children

这不允许您实际添加存储库中的项目,但至少可以通过遍历列表获取项目列表并单独访问它们!

答案 3 :(得分:0)

我找到的最简单的方法是将一个项目添加到代表所有项目的存储库中。 IE浏览器。 “./Select/option”将识别选项列表框中的所有元素,然后在用户代码中使用repoiteminfo.createAdapters(http://www.ranorex.com/Documentation/Ranorex/html/M_Ranorex_Core_Repository_RepoItemInfo_CreateAdapters__1.htm)方法为每个元素创建单独的适配器