Как я могу поймать, не виден ли элемент - PullRequest
1 голос
/ 04 октября 2019

Я пытаюсь создать сценарий, в котором я могу проверить, отображается ли элемент в приложении UWP. У меня есть методы, которые проверяют, является ли элемент Отображаемым или Не Отображаемым.

, если элемент действительно отображается, и я вызвал «IsElementDisplayed», тест, кажется, работает нормально и продолжает выполнение теста. Нокогда элемент действительно НЕ отображается, и я вызвал «IsElementDisplayed», он не возвращает ложное логическое значение ... но просто останавливает выполнение теста и говорит: «никаких данных параметров не найдено» ...

Пожалуйста, проверьте мой пример кода ....

У меня есть класс, который содержит мои локаторы и возвращает экземпляр 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 ]

0 голосов
/ 10 октября 2019

Попробуйте приведенный ниже код для c #. Это альтернатива ..

private bool IsElementPresent(By by)
   {
       try
       {
           driver.FindElement(by);
           return true;
       }
       catch (NoSuchElementException)
       {
           return false;
       }
   }
0 голосов
/ 04 октября 2019

Возвращается значение 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
0 голосов
/ 09 октября 2019

Первый вопрос: что вы хотите делать, когда 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.

    }
}
0 голосов
/ 04 октября 2019

Я не знаком с C #.

Но на Python я напишу так:

try:
    element = //find your element
    if element.is_displayed():
        return True
    else:
        raise AssertionError
except Exception:
    return False
...