selenium c# - “lazy”driver.FindElements(By ..)

时间:2018-05-16 18:09:34

标签: c# selenium-webdriver lazy-evaluation

我努力寻找一种巧妙的方法来验证哪些按钮对用户可见,这是基于他的角色和权限我遇到了问题。我正在使用带有selenium的Page Object Model设计模式来测试网站。一些页面具有不同的按钮组,根据他的角色,这些按钮应该对用户可见或不可见。

我保留Dictionary<Permission,IWebElement>并在页面的构造函数中初始化它(表示站点中某个页面的类)。

所有网页元素的定义如下:

private IWebElement btn_openShop => driver.ById("open_shop");

(ById相当于FindsElement(By.Id("open_shop")

问题是,如果该按钮不存在,则在将其添加到词典时会抛出异常。

注意:移动字典的初始化不会有帮助,因为我测试了两种情况(用户应该看到按钮的情况和不应该看到按钮的情况)。

1 个答案:

答案 0 :(得分:0)

我将词典更改为<Permission,Lazy<IWebElement>>类型 并按如下方式添加项目:

dictionary.Add(somePermission,new Lazy<IWebElement>(()=>the button))

编辑:这种技术有效,但似乎在Visual Studio中进行调试时代码崩溃了。 有什么想法吗? (在测试执行期间不会抛出异常)。