Selenium等待,直到使用Element而不是By



下午,

我需要一点建议。我有页面对象设置,例如

IWebElement SiteInUse => DriverContext.Driver.FindElement(By.ClassName("site-txt"));

我设置了一个方法1.等待元素可见。2.检查元素文本是否正确。

我正在努力超越

WaitHelpers.WaitTillVisiible(By.ClassName("site-txt"));

就好像id更改了一样,我需要在两个地方对其进行编辑。我正在尝试为IWebElement创建一个扩展方法。

我试过

ublic static bool WaitUntilElementIsVisible(this IWebElement element)
{
WebDriverWait wait = new WebDriverWait(DriverContext.Driver, TimeSpan.FromSeconds(30));
return wait.Until(ElementIsVisible(element));

}
public static Func<IWebDriver, bool> ElementIsVisible(IWebElement element)
{
return (driver) =>
{
try
{
return element.Displayed;
}
catch (Exception)
{
// If element is null, stale or if it cannot be located
return false;
}

这是有效的,但前提是元素可见,但在30秒内不会继续寻找。

我做错了什么?

我将尝试回答最初的问题,该问题需要测试可见性,但这需要在两个地方更新定位器。

答案非常简单:为定位器定义一个实例字段:

public class SomePageModel
{
By siteInUseLocator = By.ClassName("site-txt");
IWebElement SiteInUse => DriverContext.Driver.FindElement(siteInUseLocator);
...
}

然后,稍后您可以重用此字段来测试可见性:

WaitHelpers.WaitTillVisiible(siteInUseLocator);

相关内容

  • 没有找到相关文章

最新更新