WatiN -根据浏览器内的元素(例如Heading1元素)切换到浏览器窗口
本文关键字:元素 浏览器 窗口 Heading1 -根 WatiN 例如 | 更新日期: 2023-09-27 17:50:25
是否有人实现了在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",另一个窗口的heading2文本为"My Heading two"。现在我想切换到第二个弹出式浏览器窗口,其中heading heading2元素。是否可以使用Browser.AttachTo(browser.getType(), Find.By.....);
??
根据您的用例,一旦您单击链接,将打开一个新的弹出/窗口。如果您确定父窗口将有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浏览器= IE.InternetExplorers();它返回您的IE集合,并为每个,获得H2元素计数,然后尝试使用当前标题附加。我不太确定我们如何在FF中实现这一点,但一定有办法。
谢谢,Sham_