如何使用Robot Framework处理提示框?

时间:2014-05-08 13:48:09

标签: javascript selenium-webdriver robotframework

我正在使用Robot Framework和Selenium2Library进行网站测试自动化。在其中一个案例中,有一个提示框(弹出类似于警报,但其中包含一个输入字段,请参阅example here)询问一些文本。问题是Robot Framework只能在这些弹出窗口中单击“确定”或“取消”(确认操作并选择“取消下一个确认”关键字)。所以问题是:如何在提示框中输入一些文字?有可能吗?

在SeleniumLibrary中有一个Press Key Native关键字,它可以在不指定目标元素的情况下按键,但在Selenium2Library中不存在。如果您知道任何其他选择 - 将非常感谢您的回答。

使用AutoIT不是一个选项,因为测试可以在不同的平台上运行(不仅仅是Win)。

我错过了什么吗?

2 个答案:

答案 0 :(得分:3)

Selenium2Library目前不支持在提示中插入文本。我在问题跟踪器中为此打开了一个问题:

https://github.com/rtomac/robotframework-selenium2library/issues/292

在添加之前,您可以通过继承Selenium2Library来创建自己的selenium库,并且可以将该函数添加到您的版本中。

例如,创建一个名为" CustomSeleniumLibrary.py"的文件,并使其如下所示:

# CustomSeleniumLibrary.py
from Selenium2Library import Selenium2Library

class CustomSeleniumLibrary(Selenium2Library):
    def insert_into_prompt(self, text):
        alert = None
        try:
            alert = self._current_browser().switch_to_alert()
            alert.send_keys(text)

        except WebDriverException:
            raise RuntimeError('There were no alerts')

然后,您可以编写一个使用该库的测试用例:

*** Settings ***
| Library | CustomSeleniumLibrary.py
| Suite Teardown | Close All Browsers

*** test cases ***
| Example of typing into a prompt
| | Open Browser | http://www.w3schools.com/js/tryit.asp?filename=tryjs_prompt
| | Select Frame | iframeResult
| | Click Button | Try it
| | Insert into prompt | my name is Inigo Montoya
| | Confirm action

答案 1 :(得分:1)

值得指出的是,此关键字现已存在(自SeleniumLibrary 3.0起),因此不再需要使用自定义脚本/库。 http://robotframework.org/Selenium2Library/Selenium2Library.html#Input%20Text%20Into%20Alert