问题描述
是否可以将C#硒[FindsBy(.....)]
与某种自定义初始化程序一起使用?
我知道PageFactory
已被删除,无论哪种方式都无法实现我想要的方式,因为我感兴趣的是使初始化程序在使用元素时就完成了工作。
例如:
...
[FindsBy(How = How.Class,Using = "class1"))]
private IWebElement someElement { get; set;}
[FindsBy(How = How.Class,Using = "class2",Priority = 0))]
[FindsBy(How = How.XPATH,Using = "some_xpath",Priority = 1))]
private IWebElement someElement2 { get; set;}
...
现在通常使用PageFactory
,您可以在Page的构造函数中使用初始化程序,但是我感兴趣的是初始化这些对象并在使用元素时进行驱动程序查找。
例如:
...
//In a test or method .....
someElement2.Click() // and have this element initialized and found right here before the click and every time it is used to be re found
...
为此,您至少需要事先初始化或注入驱动程序,因此为什么我不确定该怎么做。
现在,我知道您可以使用其他方法(例如委托)来实现此目的,但是它们不像此方法那么简洁直观,而且我知道PageFactory具有更多的功能,例如缓存元素,但是我不知道对此感兴趣。
解决方法
private IWebElement someElement => WebDriver.FindElements(By.Class("class1").First();
private IWebElement someElement2 => WebDriver.FindElements(By.Class("class12").FirstOrDefault() ?? WebDriver.FindElements(By.XPath("some_xpath")).First();