【问题标题】:how to handle web based alert or pop ups in robot framework?如何在机器人框架中处理基于 Web 的警报或弹出窗口?
【发布时间】:2017-09-09 09:58:33
【问题描述】:

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

For Image, please click here

从图片中可以看出,我想点击允许按钮,这是在我的测试中继续进行所必需的。

那么任何人都知道如何通过机器人测试脚本点击浏览器确认弹出窗口的“允许”按钮。

提前致谢!

我的项目结构是

【问题讨论】:

标签: robotframework


【解决方案1】:

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

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

分配被分成两个变量的原因是因为 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

【讨论】:

  • 我的项目结构是由我的上级按照 Jenkins 设计的,我不知道在哪里放置和设置偏好。
  • 这需要更多信息才能回答,而且它本身确实是一个单独的问题。上面的脚本是测试代码,我怀疑它存储在你项目的 ./tests 文件夹中。在.robot 文件中查找Create Webdriver 关键字,这就是进行更改的位置。如果您找到多个结果,那么这也意味着要更改多项内容。
  • A. Kootstra 感谢您的快速回复。我将在我的项目中尝试您提供的解决方案。
  • 使用以下代码解决了我的问题。 ${options}= 评估 sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver 调用方法 ${options} add_argument start-maximized Call Method ${options} add_argument --use-fake-ui- for-media-stream 调用方法 ${options} add_argument --use-fake-device-for-media-stream ${executor}= Evaluate str('${HOME_URL}') Create WebDriver ${CHROME_BROWSER} chrome_options=${选项} 转到 ${HOME_URL}
猜你喜欢
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 2015-03-06
  • 2015-12-16
  • 2017-08-22
  • 1970-01-01
  • 2017-11-01
  • 1970-01-01
相关资源
最近更新 更多