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

标签 robotframework

我正在使用 Robot IDE 创建机器人自动化测试脚本。对于我的测试,当我开始音频通话时,浏览器会通过“允许”和“阻止”按钮请求许可。因此,由于它是一个基于网络的警报/弹出对话框,我无法在我的机器人脚本中访问它。如果我手动单击“允许”按钮,那么它会继续测试并成功通过,但我需要手动单击它。

For Image, please click here

正如您从图像中看到的,我想单击“允许”按钮,这是继续进行测试所必需的。

谁能知道如何通过机器人测试脚本单击浏览器确认弹出窗口的“允许”按钮。

提前致谢!

我的项目结构是

enter image description here

最佳答案

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

在下面的 Robot Framework 示例中,脚本打开 Google,然后单击麦克风图标开始语音搜索。在正常情况下,这会导致弹出麦克风访问权限的窗口。

分配被分成两个变量的原因是因为 url 包含被视为分隔符的字符 (.://)。然后通过手动创建结构的该部分来克服这个问题:创建字典 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

关于robotframework - 如何在机器人框架中处理基于网络的警报或弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43389550/

相关文章:

testing - selenium2和vncserver或xvfb有什么关系

docker - Gitlab 的 artifacts zip 文件是空的

java - Robot Framework和Selenium调用java方法

python - 将Python编写的带有参数的库导入到Eclipse中的Robot框架中

python - 如何将数据附加到 Robot Framework 中的 csv 文件?

linux - 是否可以使用机器人框架从另一台远程服务器连接到远程服务器

python - 机器人框架处理身份验证弹出窗口

python - 错误: TypeError: argument 1 must be a string or unicode object

robotframework - Robot Framework 运行关键字 If .. ELSE 失败

android - 带有机器人框架的 MonkeyRunner