如何在机器人框架中处理基于Web的警报或弹出窗口?

时间:2017-04-13 10:16:57

标签: robotframework

我正在使用Robot IDE创建机器人自动化测试脚本。对于我开始进行音频通话时的测试,浏览器会通过"允许"和" Block"纽扣。因此,它是一个基于Web的警报/弹出对话框,我无法在我的机器人脚本中访问它。如果我点击"允许"手动按钮然后它继续测试并成功通过,但我需要手动点击它。

For Image, please click here

从图像中我可以看到,我想点击允许按钮,这是我测试中必须进行的。

所以任何人都知道如何点击"允许"通过机器人测试脚本浏览器确认弹出按钮。

提前致谢!

我的项目结构是

enter image description here

1 个答案:

答案 0 :(得分:2)

可以使用chrome://settings/查看推动此功能的Chrome设置。这些设置存储在Chrome配置文件中。可以使用chrome://version/找到此配置文件的路径。在preferences文件中,可以找到JSON结构设置。

在下面的机器人框架示例中,脚本打开Goog​​le,然后单击麦克风图标以开始语音搜索。在正常情况下,这会导致麦克风访问弹出窗口。

分配分为两个变量的原因是因为url包含被视为分隔符的字符(. : //)。然后通过手动创建结构的这一部分来克服这个问题:Create Dictionary https://www.google.nl:443,*=${SiteOptions}

这导致了理想的偏好结构:

...
"profile":{
     ...
     "content_settings": {
         ...
         "exceptions": {
            ...
            "media_stream_mic":{
               "https://www.google.nl:443,*":{
                  "last_used":1492245954.955647,
                  "setting":1
               }
            },

机器人脚本:

*** Settings ***
Library    Selenium2Library    

*** Test Cases ***

 Chrome With Preferences
    ${chrome_options} =     Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver

    &{SiteOptions}         Create Dictionary    last_used=${1470931206}     setting=${1}
    &{media_stream_mic}    Create Dictionary    https://www.google.nl:443,*=${SiteOptions}
    ${prefs}               Create Dictionary    profile.content_settings.exceptions.media_stream_mic=${media_stream_mic}

    Call Method    ${chrome_options}    add_experimental_option    prefs    ${prefs}

    Create WebDriver    Chrome    chrome_options=${chrome_options}

    Go To    https://google.com

    Click Link    css=#gs_st0 > a    # Click the search microphone icon.

    sleep     5s
    [Teardown]    Close Browser