有没有人在WatiN中实现切换浏览器窗口的不同方法? 目前支持的方法是:
browserType
输入:System..::.Type
要附加的WatiN浏览器类型。
constraint
输入:WatiN.Core.Constraints..::.Constraint
要查找的浏览器窗口的Constraint
。支持Find.ByUrl()
,Find.ByUri()
,Find.ByTitle()
和Find.By("hwnd", windowHandle)
。
我想创建一个方法,根据浏览器页面中存在的某个元素或使用应该是唯一的hwnd切换到新的弹出窗口。 理想情况下,此方法应支持浏览器IE和Firefox。
用例:
假设我打开了一个浏览器窗口,单击一个链接后,它会打开两个新的弹出/浏览器窗口。两者都有相同的标题但内容不同。
一个窗口将heading1文本作为" My Heading One"和其他人有标题2文本作为"我的标题二"。
现在我想切换到标题为heading2元素的第二个弹出浏览器窗口。
是否可以使用Browser.AttachTo(browser.getType(), Find.By.....);
??
答案 0 :(得分:0)
根据您的使用案例,一旦您点击链接,就会打开一个新的弹出/窗口。如果你确定在父窗口中会有H1元素(用于验证/附加)和子窗口H2元素(验证/附加)。因此,您需要创建H1和H2元素,如下所示。
[ElementTag("h1")]
public class HeaderLevel1 : ElementContainer<HeaderLevel1>
{
/// <summary>
/// Initializes a new instance of the <see cref="Div"/> class.
/// Mainly used by WatiN internally.
/// </summary>
/// <param name="domContainer">The DOM container.</param>
/// <param name="htmlH1Element">The HTML h1 element.</param>
public HeaderLevel1(DomContainer domContainer, INativeElement htmlH1Element) : base(domContainer, htmlH1Element) { }
/// <summary>
/// Initializes a new instance of the <see cref="Div"/> class.
/// Mainly used by WatiN internally.
/// </summary>
/// <param name="domContainer">The DOM container.</param>
/// <param name="finder">The HTML h1 element.</param>
public HeaderLevel1(DomContainer domContainer, ElementFinder finder) : base(domContainer, finder) { }
/// <summary>
/// Gets the name of this Watin element.
/// </summary>
/// <returns></returns>
public string GetName()
{
return "HeaderLevel1";
}
}
对于H2,您也可以这样做。对于IE,您可以使用,
IECollection browsers = IE.InternetExplorers(),
它返回IE集合,并为每个,获取H2元素计数,然后尝试使用当前标题附加。我不太确定如何在FF中实现这一点,但必须有办法。
谢谢, 深水_