我已经通过Selenium进行了多项测试。每当一个人失败时,我只是在测试周围找到一个无法找到元素的捕获。
看起来很模糊,我希望能够说出找不到哪个元素并将其写入我的错误日志。有没有办法确定哪些元素无法找到?
这是我正在使用的一些示例代码,用于捕获我的错误。
try
{
base.SetUp();
webDriverWait.Until(ExpectedConditions.ElementToBeClickable(
excelSession.FindElementByName("Blank workbook"))).Click();
webDriverWait.Until(ExpectedConditions.ElementToBeClickable(
excelSession.FindElementByName("Create"))).Click();
webDriverWait.Until(ExpectedConditions.ElementToBeClickable(
excelSession.FindElementByName("New"))).Click();
webDriverWait.Until(ExpectedConditions.ElementToBeClickable(
excelSession.FindElementByName("E Sample Data"))).Click();
CommonMethods.IsElementDisplayed(excelSession,
new StackTrace(true).GetFrame(0).GetFileLineNumber(),
new StackTrace(true).GetFrame(0).GetMethod(), "CreateErrorIcon",
"Error appeard while selecting the E Sample Data button");
}
catch (Exception)
{
CommonMethods.ExceptionHandler("Couldn't find element",
new StackTrace(true).GetFrame(0).GetFileLineNumber(),
new StackTrace(true).GetFrame(0).GetMethod(), excelSession);
}
答案 0 :(得分:2)
声明一个将搜索元素的函数:
Func<RemoteWebDriver, By, IWebElement> find = (driver, by) =>
{
var elements = driver.FindElements(by);
if (elements.Count < 1)
{
var msg = $"Couldn't find element {by}";
logger.Warn(msg);
throw new Exception(msg);
}
return elements.First();
};
然后像这样使用它:
webDriverWait.Until(
ExpectedConditions.ElementToBeClickable(
find(excelSession, By.Name("Blank workbook")))
).Click();