机器人框架中的chrome选项

时间:2016-12-11 08:02:22

标签: python robotframework selenium2library

我正在尝试从网页上的链接下载文件。但是我得到了恼人的警告“这种类型的文件可能会伤害......无论如何?保持,丢弃”。我尝试了几个选项以避免警告,但仍然得到它。我正在使用机器人框架,但我使用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)

有人可以建议一种方法来禁用下载警告。非常感谢。

5 个答案:

答案 0 :(得分:3)

我找到了一些研究的答案。由于某种原因(可能是一个错误),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)

答案 1 :(得分:1)

您需要在列表中添加所有参数。然后将此列表传递给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}

答案 2 :(得分:1)

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

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

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

options=add_argument("--disable-popup-blocking"); add_argument("--ignore-certificate-errors")

答案 3 :(得分:0)

最好不要禁用浏览器“只是为了解决一个问题”附带的任何安全功能或任何其他默认设置(除非有足够的理由),最好根本不动手找到解决方案和

只要稍后在所有代码库中需要使用的地方,只需使用python中的请求模块并使用与关键字相同的名称即可。之所以采用这种方法,是因为最好利用普适的模块来完成工作,而不是将时间花费在一个模块上花费大量的时间,我以前经常这样做,可以更好地安装请求+ 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)

答案 4 :(得分:0)

这对我有用(必须使用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}