gpt4 book ai didi

c# - 如何使用页面工厂找到另一个 WebElement 的 WebElement

转载 作者:太空宇宙 更新时间:2023-11-03 13:40:27 28 4
gpt4 key购买 nike

对源代码进行了简短的扫描,不确定最佳做法是什么。

例如,假设我有一个页面对象“DummyPage”,它有两个面板元素TopPanelBottomPanel。每个面板都有一些元素,这些元素由 TopPanel.FindElement() 而不是 driver.FindElement() 找到。这个怎么申请Page Factory?

我知道 PageFactory.InitElements(ISearchContext, Object) 接受 ISearchContext,但是,我不确定如何将它用于页面和一个类中的面板元素。

public class DummyPage {

private IWebDriver driver;

public DummyPage(IWebDriver driver) {
this.driver = driver;
}

public IList<IWebElement> DummyLinks {
get { return driver.FindElements(By.CssSelector(".some-dummy-links")); }
}

public IWebElement TopPanel {
get { return driver.FindElement(By.Id("top-panel")); }
}

public IWebElement BottomPanel {
get { return driver.FindElement(By.Id("bottom-panel")); }
}

public IWebElement FooInTopPanel {
get { return TopPanel.FindElement(By.CssSelector(".something")); }
}

public IWebElement FooInBottomPanel {
get { return BottomPanel.FindElement(By.CssSelector(".something")); }
}
}

public class DummyPageWithPageFactory {

public DummyPageWithPageFactory(IWebDriver driver) {
PageFactory.InitElements(driver, this);
}

[FindsBy(How = How.CssSelector, Using = ".some-dummy-links")]
public IList<IWebElement> DummyLinks { get; private set; }

[FindsBy(How = How.Id, Using = "top-panel")]
public IWebElement TopPanel { get; private set; }

[FindsBy(How = How.Id, Using = "bottom-panel")]
public IWebElement BottomPanel { get; private set; }

//public IWebElement FooInTopPanel { get; private set; }
//public IWebElement FooInBottomPanel { get; private set; }
}

如果我对所有实例使用 driver.FindElement() 并连接所有定位器,我可能会面临另一种情况,即所有定位器都太长,我无法在 C# 属性中使用变量.

[FindsBy(How = How.CssSelector, Using = "#top-panel .blah .blah .super-long-blah .something")]
[FindsBy(How = How.CssSelector, Using = "#top-panel .blah .blah .super-long-blah .something-new")]
[FindsBy(How = How.CssSelector, Using = "#bottom-panel .blah .blah .super-long-blah .something")]

最佳答案

查看此 example :

[FindsBy(How = How.Name, Using = "anElementName", Priority = 0)]
[FindsBy(How = How.Name, Using = "differentElementName", Priority = 1)]
public IWebElement thisElement;

关于c# - 如何使用页面工厂找到另一个 WebElement 的 WebElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17225824/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com