【发布时间】:2018-02-23 16:55:56
【问题描述】:
我写了一个 IsElementPresent 方法,它返回 true/false 是否显示元素。
这是我的方法
public static bool IsElementPresent(this IWebElement element)
{
try
{
return element.Displayed;
}
catch (Exception)
{
return false;
}
}
现在有时当它应该返回 false 时,element.Displayed 在捕获异常并返回 false 之前等待大约 20 秒(通过调试找到)。如果它找到元素,它工作正常。
我还将代码更改为:
public static bool IsElementPresent(this IWebElement element)
{
try
{
WebDriverWait wait = new WebDriverWait(DriverContext.Driver, TimeSpan.FromSeconds(0.1));
wait.Until(ExpectedConditions.ElementToBeClickable(element));
return true;
}
catch (Exception)
{
return false;
}
}
现在 Wait.Until 行中也发生了同样的等待。代码工作正常,但在找不到元素时只是不必要的延迟。如何找到元素是否重要。当按类找到元素时,就会发生这种特殊的延迟。大多数其他元素是使用 xpath、css 或 id 找到的。如果我错过任何信息,请告诉我。使用 VS 社区 15.5.6
【问题讨论】:
-
您的具体问题是什么?您能总结一下您尝试自动化的手动步骤吗?
-
你能在这个元素周围发布一点 HTML 吗?
-
我正在尝试自动化应用程序。这个问题发生在我们的一种形式上。在此页面上,我通过单击按钮执行一些操作。如果不允许此操作,Web 应用程序将在页面上抛出一些带有一些文本的错误。现在我编写了一个方法(此方法调用上述方法),它将检查是否存在错误文本(仅在没有错误时进行检查)。现在,当它到达 element.Displayed 时,它也在等待抛出异常。希望我回答了所有问题。
-
这里是 HTML 元素。 以下表格有问题,
“区”
请更正excel文件中的错误。
标签: c# visual-studio selenium qwebelement