我正在使用 Selenium Page 工厂,我想对其进行某些扩展,但不能因为它们是密封的,所以我想编写自己的自定义逻辑。
问题:PageFactory.InitElements 如何工作,以便所有属性在使用时加载它们的值,而不是在调用此方法时加载它们的值。
所以,用一个例子来解释它
//// Button on page load
[FindsBy(How = How.CssSelector, Using = "#lst-ib")]
public IWebElement Btn;
//// Button redirecting to Page 2
[FindsBy(How = How.CssSelector, Using = "#lst-ib")]
public IWebElement LinkBtn;
////Button on second page
[FindsBy(How=How.CssSelector, Using = "#rso > div:nth-child(1) > div > div:nth-child(1) > div > div > h3 > a")]
public IWebElement NewBtn;
因此,他们的页面工厂的美妙之处在于,所有元素都已加载,但在使用时它们会转换为 webelements,因为如果所有属性在初始化时都分配了值,那么 NewBtn 属性总是会失败,就像在第 2 页上一样。
因此,他们可能会使用什么概念来初始化属性,以便在使用时而不是在运行时分配它们,任何虚拟代码都会很好,并且很高兴理解
提前致谢