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