AppiumLibrary:元素不应该是可见的关键字?

时间:2017-11-17 18:49:21

标签: appium robotframework

AppiumLibrary中,从版本1.4.5开始,引入了一个非常方便的关键字Element Should Be Visible。但我也在寻找该关键字的相反版本,这类似于Element Should Not Be Visible。由于AppiumLibrary还没有,我们有什么办法可以做到这一点吗?

2 个答案:

答案 0 :(得分:1)

总是有可能扩展库的python代码,这应该不是很困难。您基本上只需要克隆Element Should Be Visible关键字定义并更改条件以执行相反的操作。

但是,如果您不可能这样做,也许您可​​以将关键字Run Keyword And Expect Error与您提到的关键字Element Should Be Visible结合使用。在不可见的元素上使用此关键字会引发错误,在这种特殊情况下会出现错误。

尽管如此,这是一个愚蠢的解决方法,无法帮助您测试的可读性,您应该首先考虑扩展库本身。

答案 1 :(得分:1)

感谢Verv指南。我尝试了他建议的两种方法,两者似乎都非常简单。为了将来参考,我在这里解释这两种方法。

方法1:

AppiumeLibrary/keywords目录下,有一个名为_element.py的文件,用于定义Element Should Be Visible关键字。我能够克隆它来创建我正在寻找的新关键字。

以下是定义Element Should Be Visible

的代码段
    def element_should_be_visible(self, locator, loglevel='INFO'):
        """Verifies that element identified with locator is visible.

        Key attributes for arbitrary elements are `id` and `name`. See
        `introduction` for details about locating elements.

        New in AppiumLibrary 1.4.5
        """
        if not self._element_find(locator, True, True).is_displayed():
            self.log_source(loglevel)
            raise AssertionError("Element '%s' should be visible "
                             "but did not" % locator)

在上面的代码段旁边,您可以添加以下代码段来定义新关键字Element Should Not Be Visible

    def element_should_not_be_visible(self, locator, loglevel='INFO'):
        """Verifies that element identified with locator is visible.

        Key attributes for arbitrary elements are `id` and `name`. See
        `introduction` for details about locating elements.

        New in AppiumLibrary 1.4.5
        """
        if self._element_find(locator, True, True).is_displayed():
            self.log_source(loglevel)
            raise AssertionError("Element '%s' should not be visible "
                                 "but did" % locator)

方法2

如果您不想扩展现有的库,可以使用现有关键字的组合,如下所示:

${isVisible}=  Run Keyword And Return Status   Element Should Be Visible   'someElementSelector'

Should Be Equal  ${isVisible}    ${FALSE}