【发布时间】:2017-04-08 11:21:50
【问题描述】:
希望我不是第一个遇到这个问题的人。
我正在用 C# 编写一些 selenium 测试,在尝试采用页面对象模型设计同时还需要使用 ExpectedConditions 类进行一些显式等待时遇到了两难境地。
假设我将我的元素存储在一个元素映射类中,该类只是一个使用存储在资源文件中的 XPath 调用 .FindElement 方法的属性...
public class PageObject {
public IWebElement Element
{
get { return DriverContext.Driver.FindElement(By.XPath(Resources.Element)); }
}
}
然后我会继续在各种 selenium 方法中使用该属性。
我遇到的问题是我还需要检查该元素在页面上是否可见,并且在我执行检查之前它会出错(例如,使用 WebDriverWait,将 ExpectedConditions.ElementIsVisible(by) 传递给 .until 方法)。
如何干净地将 IWebElement 和 By 定位器分开,并在需要的地方允许这种显式等待/检查?
TLDR - 如何在维护页面对象模型设计的同时灵活地使用基于元素的 By 定位器的显式等待。
非常感谢,
【问题讨论】: