检查元素是否存在appium C#

时间:2017-04-13 15:27:21

标签: c# appium

我做了一些单元测试,我正在使用appium运行它们。当弹出错误时,我尝试通过

捕获它
if (PowerPointSession.FindElementByAccessibilityId("CreateErrorIcon").Displayed == true)
{
    exception = "An error occured when creating Agenda/TOC";
    ExceptionHandler(exception);
}

如果我有错误并找到一个名为CreateErrorIcon的元素,这样可以正常工作。但是,如果没有弹出错误,它似乎卡在if语句的开头,好像它正在检查要显示的一个名为CreateErrorIcon的元素,并且由于某种原因,如果它没有,它永远不会超出if语句找不到元素。

有没有人有任何想法或能指出我为什么会这样做的正确方向?

1 个答案:

答案 0 :(得分:0)

This post回答了您的问题。 基本上,FindElementByAccessibilityId会等到找到元素或发生超时。

在C#中,检查看起来像:

private static bool IsElementPresent(WindowsDriver<AppiumWebElement> driver, Action findAction)
{
    driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.Zero);
    try
    {
        findAction();
        return true;
    }
    catch (Exception)
    {
        return false;
    }
    finally
    {
        driver.Manage().Timeouts().ImplicitlyWait(GuiTestRunner.Timeout);
    }
}

和用法:

var isError = IsElementPresent(PowerPointSession, 
    () => PowerPointSession.FindElementByAccessibilityId("CreateErrorIcon"));
if (isError) 
{
    exception = "An error occured when creating Agenda/TOC";
    ExceptionHandler(exception); 
}