1

我正在尝试创建一个脚本,我可以在其中检查该元素是否显示在 UWP 应用程序上。我有一个方法可以检查元素是显示还是不显示..

如果元素实际显示并且我调用了“IsElementDisplayed”,则测试似乎工作正常并继续执行测试。但是当元素真的没有显示并且我调用了“IsElementDisplayed”时,它不会返回 false boolean值..但它只是停止测试执行并说,“没有找到这样的给定参数”......

请检查我的示例代码....

我有一个包含我的定位器并返回 WindowsElement 实例的类:

    protected WindowsElement Id(string id)
    {
        return Driver.FindElementById(id);
    }

    protected WindowsElement XPath(string xpath)
    {
        return Driver.FindElementByXPath(xpath);
    }

    protected WindowsElement Name(string name)
    {
        return Driver.FindElementByName(name);
    }

    protected WindowsElement AccessibilityId(string id)
    {
        return Driver.FindElementByAccessibilityId(id);
    }

然后我有 Page 类,其中包含我的元素的属性.. 下面的示例代码:

    public WindowsElement SaveObligation_Btn => this.AccessibilityId("OBLGTN_saveObligation_btn");

    public WindowsElement CancelObligation_Btn => this.AccessibilityId("OBLGTN_CancelObligation_btn");

    public WindowsElement ObligationAdd_Btn => this.AccessibilityId("SMMRY_AddObligation_btn");

最后,我有一个 testhelper 类,其中包含以下方法:

    public bool IsNotDisplayed(WindowsElement element)
    {
        try
        {
            Assert.IsFalse(element.Displayed, $"Element: {element} is not displayed on the page!");
            return false;
        }
        catch (Exception)
        {
            return true;
        }
    }

但是当我尝试调用“IsNotDisplayed”方法以在它捕获到任何异常时返回 false ..,我的测试执行停止并且我将有一个指向我的 Locator 类的错误并说,“找不到元素与给定参数”...

我希望方法“isNotDisplayed”应该返回错误的布尔值,所以我可以验证元素是否可见。

4

4 回答 4

0

我对 C# 不熟悉。

但是在 Python 中,我会这样写:

try:
    element = //find your element
    if element.is_displayed():
        return True
    else:
        raise AssertionError
except Exception:
    return False
于 2019-10-04T04:29:06.253 回答
0

第一个问题是当 noElementIsDisplayed 时你想做什么?当然,它会捕获一些异常。在您的场景中,如果您在抛出异常时不想做任何事情,那么您应该将 catch 块留空。试试下面的代码:

public bool IsNotDisplayed(WindowsElement element)
{
    try
    {
        Assert.IsFalse(element.Displayed, $"Element: {element} is not displayed on the page!");
        return false;
    }
    catch (Exception e)
    {
        // do nothing and it will continue your script.

    }
}
于 2019-10-09T04:19:48.047 回答
-1

如果显示元素,则返回 true,否则返回 false。

C# 代码

public bool IsNotDisplayed(WindowsElement element)
    {
        try
        {
            element.Displayed;

        }
        catch (Exception)
        {
            return false;
        }
        return true;
    }

Java 代码

public static boolean IsDispayed(WebElement webelement)
{
    try {
        webelement.isDisplayed();
    } catch (Exception e) {
        return false;
    }
    return true;
}

Python代码

try:
    element = driver.find_element_by_xpath('XPATH')
    if element.is_displayed():
        return True
    else:
        raise AssertionError
except Exception:
    return False
于 2019-10-04T05:45:08.203 回答
-1

试试下面的 c# 代码。这是另一种选择。。

private bool IsElementPresent(By by)
   {
       try
       {
           driver.FindElement(by);
           return true;
       }
       catch (NoSuchElementException)
       {
           return false;
       }
   }
于 2019-10-10T05:13:30.407 回答