如何在文本字段中测试占位符

时间:2013-01-07 10:23:50

标签: selenium-webdriver robotframework

我想使用robotframework验证文本字段中的占位符文本。

Username

我使用了不同的Selenium2Library关键字,但它们都没有完全符合我的要求。

有没有人有办法在我的测试中获得此功能?

3 个答案:

答案 0 :(得分:0)

您可以运行命令getAttribute(input_field_locator@placeholder)。这将返回您想要的文本,然后您可以断言。

答案 1 :(得分:0)

一旦您设法从REPL访问您正在寻找的功能,您可能会发现它无法通过robotframework访问。您可以通过为Selenium2Library创建一个包装器来公开新的关键字,该包装器使用额外的功能扩展它 - 例如,请参阅我正在处理的教程中的https://github.com/alistair-broomhead/scalable-robotframework-example/blob/master/TestLibraries/Selenium2Custom

如果您改为导入此类(获取文本和获取HTML,这对验证非常有用),此示例只会在Selenium2Library中添加两个关键字到robotframework:

from Selenium2Library import Selenium2Library
class Selenium2Custom(Selenium2Library):
    """
    Custom wrapper for robotframework Selenium2Library to add extra functionality
    """
    def get_text(self, locator):
        """
        Returns the text of element identified by `locator`.

        See `introduction` for details about locating elements.
        """
        return self._get_text(locator)
    def get_html(self, id=None):
        """
        Get the current document as an XML accessor object.
        """
        from lxml import html
        src = self.get_source().encode('ascii', 'xmlcharrefreplace')
        page = html.fromstring(src)
        element = page.get_element_by_id(id) if id is not None else page
        return html.tostring(element)

因此,做这样的事情是微不足道的:

from Selenium2Library import Selenium2Library
class Selenium2Custom(Selenium2Library):
    """
    Custom wrapper for robotframework Selenium2Library to add extra functionality
    """
    def get_placeholder(self, locator):
        """
        Returns the placeholder text of element identified by `locator`.
        """
        element = self._element_find(locator, True, False)
        return element.get_attribute("@placeholder")

现在我不知道这肯定会对你有用,但对我来说它的确如此:

Python 2.7.3 (v2.7.3:70274d53c1dd, Apr  9 2012, 20:52:43) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from Selenium2Library import Selenium2Library
>>> def get_placeholder(self, locator):
...     element = self._element_find(locator, True, False)
...     return element.get_attribute("placeholder")
... 
>>> Selenium2Library.get_placeholder = get_placeholder
>>> session = Selenium2Library()
>>> session.open_browser("http://www.wikipedia.org/wiki/Main_Page",
                         remote_url="http://127.0.0.1:4444/wd/hub")
1
>>> session.get_placeholder("search")
u'Search'
>>> 

答案 2 :(得分:0)

我还想检查占位符文本,来到这里阅读注释后,我得到了一些线索。现在,棘手的部分是如何在机器人框架中执行此操作,并且在进行了一些数学运算之后,我能够轻松地执行此操作。这是我的回答,分为2行:

${webelement}=  Get WebElement  locator

${placeholder}=  Call Method  ${webelement}  get_attribute  placeholder