微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Selenium.Net核心2使用不带PageFactory

如何解决Selenium.Net核心2使用不带PageFactory

所以我有一个稍微复杂的问题。

是否可以将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();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。