无法找到硒元素错误日志

时间:2017-07-31 16:44:00

标签: c# selenium

我已经通过Selenium进行了多项测试。每当一个人失败时,我只是在测试周围找到一个无法找到元素的捕获。

看起来很模糊,我希望能够说出找不到哪个元素并将其写入我的错误日志。有没有办法确定哪些元素无法找到?

这是我正在使用的一些示例代码,用于捕获我的错误。

try
{
    base.SetUp();

    webDriverWait.Until(ExpectedConditions.ElementTo‌​BeClickable(
      excelSession.FindElementByName("Blank workbook"))).Click();
    webDriverWait.Until(ExpectedConditions.ElementTo‌​BeClickable(
      excelSession.FindElementByName("Create"))).Click();
    webDriverWait.Until(ExpectedConditions.ElementTo‌​BeClickable(
      excelSession.FindElementByName("New"))).Click();
    webDriverWait.Until(ExpectedConditions.ElementTo‌​BeClickable(
      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);
}

1 个答案:

答案 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.ElementTo‌​BeClickable(
  find(excelSession, By.Name("Blank workbook")))
).Click();