我想使用robotframework验证文本字段中的占位符文本。
我使用了不同的Selenium2Library关键字,但它们都没有完全符合我的要求。
有没有人有办法在我的测试中获得此功能?
答案 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