我正在使用 Robot IDE 创建机器人自动化测试脚本。对于我的测试,当我开始音频通话时,浏览器会通过“允许”和“阻止”按钮请求许可。因此,由于它是一个基于网络的警报/弹出对话框,我无法在我的机器人脚本中访问它。如果我手动单击“允许”按钮,那么它会继续测试并成功通过,但我需要手动单击它。
正如您从图像中看到的,我想单击“允许”按钮,这是继续进行测试所必需的。
谁能知道如何通过机器人测试脚本单击浏览器确认弹出窗口的“允许”按钮。
提前致谢!
我的项目结构是
最佳答案
可以使用 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/