chrome 机器人框架中的选项

chrome options in robot framework

我正在尝试从网页上的 link 下载文件。但是我收到烦人的警告 "This type of file can harm...anyway? Keep, Discard"。我尝试了几种选择来避免警告,但仍然收到警告。我正在使用机器人框架,但是我正在使用 python 为我创建新关键字。

@keyword('open "${url}" in chrome browser')
    def open_chrome_browser(self, url):
        options = webdriver.ChromeOptions()
        options.add_argument("--start-maximized")
        options.add_argument("--disable-web-security")
        options.add_argument("--allow-running-insecure-content")
        options.add_argument("--safebrowsing-disable-extension-blacklist")
        options.add_argument("--safebrowsing-disable-download-protection")
        prefs = {'safebrowsing.enabled': 'true'}
        options.add_experimental_option("prefs", prefs)
        self.open_browser(url, 'chrome',alias=None, remote_url=False, desired_capabilities=options.to_capabilities(), ff_profile_dir=None)

有人可以建议一种禁用下载警告的方法吗?

我通过一些研究找到了答案。出于某种原因(可能是错误)open_browser 没有为 chrome 设置功能。 因此,替代方法是使用 'create_webdriver'。使用以下代码:

@keyword('open "${url}" in chrome browser')
def open_chrome_browser(self, url):
    options = webdriver.ChromeOptions()
    options.add_argument("--start-maximized")
    options.add_argument("--disable-web-security")
    options.add_argument("--allow-running-insecure-content")
    options.add_argument("--safebrowsing-disable-extension-blacklist")
    options.add_argument("--safebrowsing-disable-download-protection")
    prefs = {'safebrowsing.enabled': 'true'}
    options.add_experimental_option("prefs", prefs)
    instance = self.create_webdriver('Chrome', desired_capabilities=options.to_capabilities())
    self.go_to(url)

您需要添加列表中的所有参数。然后将此列表传递给 Dictionary 对象并将其传递给打开的浏览器。 前任。

${list} =     Create List    --start-maximized    --disable-web-security
${args} =     Create Dictionary    args=${list}
${desired caps} =     Create Dictionary    platform=${OS}     chromeOptions=${args}
Open Browser    https://www.google.com    remote_url=${grid_url}    browser=${BROWSER}    desired_capabilities=${desired caps}

最好不要禁用浏览器附带的任何安全功能或任何其他默认设置(除非有充分的理由)"just to solve one problem",最好根本不碰它来找到解决方案, 和

只需使用 python 中的 requests 模块并使用 same as 关键字,以后在所有代码库中的任何地方都可以使用。采用这种方法的原因是,最好使用无处不在的模块来完成工作,而不是花大量时间在一个模块上,我以前这样做过,最好安装 requests + robotframework-requests 库和其他只是为了完成工作。

只需使用下面的代码从中创建一个关键字并在任何你想要的地方调用它,而不是经历修复浏览器行为的麻烦。

import requests

file_url = "http://www.africau.edu/images/default/sample.pdf"

r = requests.get(file_url, stream=True)

with open("sample.pdf", "wb") as pdf:
    for chunk in r.iter_content(chunk_size=1024):

        # writing one chunk at a time to pdf file
        if chunk:
            pdf.write(chunk)

这对我有用(必须使用 SeleniumLibrary 4)。修改 Chrome 使其下载 PDF 而不是查看它们:

${chrome_options}=  Evaluate  sys.modules['selenium.webdriver'].ChromeOptions()  sys, selenium.webdriver
${disabled}  Create List  Chrome PDF Viewer  PrintFileServer
${prefs}  Create Dictionary  download.prompt_for_download=${FALSE}  plugins.always_open_pdf_externally=${TRUE}  plugins.plugins_disabled=${disabled}
Call Method  ${chrome_options}  add_experimental_option  prefs  ${prefs}

${desired_caps}=  Create Dictionary  browserName=${browserName}  version=${version}  platform=${platform}  screenResolution=${screenResolution}  record_video=${record_video}  record_network=${record_network}  build=${buildNum}  name=${globalTestName}

Open Browser  url=${LOGINURL}  remote_url=${remote_url}  options=${chrome_options}  desired_capabilities=${desired_caps}

下面是一个更简单的解决方案:

打开浏览器 ${URL} ${BROWSER} options=add_argument("--disable-notifications")

对于多个选项,您可以使用 with ;分开了。

options=add_argument("--disable-popup-blocking"); add_argument("--忽略证书错误")