在Web应用程序上下文中,是否可以,如果是,如何让Document
在UIMap
中获得某个子元素的句柄?
例如,我的UIMap
就是这样的
例如,Link_Logout
处理,我需要进入树中并获得Document
。提前谢谢。
为了澄清一下,我在许多网页上都有一个Telerik组合框控件,所以我决定创建一个简单的自定义类来处理控件。首先,我实现了它传递两个参数:UITestControl和字符串id:
private UITestControl mDocument;
private string mElementId;
private HtmlDiv mDropDown;
private HtmlEdit mEditBox;
public TelerikComboBox(UITestControl document, String elementId)
{
mDocument = document;
mElementId = elementId;
mDropDown = new HtmlDiv(document);
mDropDown.SearchProperties.Add(HtmlDiv.PropertyNames.Id, mElementId + "_DropDown", PropertyExpressionOperator.Contains);
mEditBox = new HtmlEdit(document);
mEditBox.SearchProperties.Add(HtmlEdit.PropertyNames.Id, mElementId + "_Input", PropertyExpressionOperator.Contains);
mArrow = new HtmlHyperlink(document);
mArrow.SearchProperties.Add(HtmlEdit.PropertyNames.Id, mElementId + "_Arrow", PropertyExpressionOperator.Contains);
}
要初始化它,我必须致电
public static TelerikComboBox comboBox
{
get { return new TelerikComboBox(new MainMenuMap().Window.Document, "ctl00_comonHeader_list"); }
}
在优化方面,我想传递一个参数 - 根div元素,存储在UIMap中:
public static TelerikComboBox myCombo
{
get { return new TelerikComboBox(new MainMenuUIMap().Window.Document.MyTelerikCombo); }
}
。 。
public TelerikComboBox(HtmlDiv element)
{
mElementId = element.Id;
mDropDown = new HtmlDiv(element);
mDropDown.SearchProperties.Add(HtmlDiv.PropertyNames.Id, mElementId + "_DropDown", PropertyExpressionOperator.Contains);
mEditBox = new HtmlEdit(element);
mEditBox.SearchProperties.Add(HtmlEdit.PropertyNames.Id, mElementId + "_Input", PropertyExpressionOperator.Contains);
mArrow = new HtmlHyperlink(element);
mArrow.SearchProperties.Add(HtmlEdit.PropertyNames.Id, mElementId + "_Arrow", PropertyExpressionOperator.Contains);
}
问题是虽然“_Input”和“_Arrow”位于控件的根目录中,但“_DropDown”部分放在HTML之外,导致Failed to find any control that matched the search condition
异常。所以我想也许我可以以某种方式上升树并检索UITestControl Document
以避免将多个参数传递给该方法。