Firefox 首选项更新不适用于机器人框架
Firefox preference update is not applied with robot framework
我正在尝试关闭 Firefox 下载对话框。我使用了这段使用 selenium 库的 python 代码。这应该使该文件直接下载到输入的路径而无需额外询问。
from selenium import webdriver
def disable_download_dialog(path):
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList", 2)
fp.set_preference("browser.download.manager.showWhenStarting", False)
fp.set_preference("browser.download.dir", path)
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf")
fp.update_preferences()
return fp.path
然后我在我的 RF 测试中这样调用这个函数:
${ff_profile_path}= disable download dialog ${EXECDIR}\path\to\my\folder
然后像这样打开浏览器:
Open Browser ${url} ${browser} ff_profile_dir=${ff_profile_path}
从测试运行我可以看到下载window仍然显示。我要发送下载文件的文件夹路径显示在测试日志中,如下所示:
D:\path\to\the\folder\named\Downloads
并且 firefox 配置文件确实已更新并保存在临时文件中。但看起来它没有加载,因此用于我的测试。 firefox配置文件的路径是这样的:
C:\Users\surname~1.name\AppData\Local\Temp\tmp83d29mnz
ofc 每次创建新配置文件时,都不是问题。如果我还可以设置我用 python 函数创建的这个 firefox 配置文件的路径,也许会很棒。
所以这里的问题是:
为什么下载对话框在我禁用后仍然显示?
firefox 配置文件可以保存在我定义的文件夹中吗?
好的,所以我发现了,缺少的部分是什么。
我在python函数中添加了这两行代码
fp.set_preference("browser.helperApps.alwaysAsk.force", False)
fp.set_preference("pdfjs.disabled", True)
所以函数的最终版本如下所示:
def disable_download_dialog(path):
from selenium import webdriver
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList", 2)
fp.set_preference("browser.download.manager.showWhenStarting", False)
fp.set_preference("browser.download.dir", path)
fp.set_preference("browser.helperApps.alwaysAsk.force", False)
fp.set_preference("browser.helperApps.neverAsk.saveToDisk",'application/pdf')
fp.set_preference("pdfjs.disabled", True)
fp.update_preferences()
return fp.path
我正在尝试关闭 Firefox 下载对话框。我使用了这段使用 selenium 库的 python 代码。这应该使该文件直接下载到输入的路径而无需额外询问。
from selenium import webdriver
def disable_download_dialog(path):
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList", 2)
fp.set_preference("browser.download.manager.showWhenStarting", False)
fp.set_preference("browser.download.dir", path)
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf")
fp.update_preferences()
return fp.path
然后我在我的 RF 测试中这样调用这个函数:
${ff_profile_path}= disable download dialog ${EXECDIR}\path\to\my\folder
然后像这样打开浏览器:
Open Browser ${url} ${browser} ff_profile_dir=${ff_profile_path}
从测试运行我可以看到下载window仍然显示。我要发送下载文件的文件夹路径显示在测试日志中,如下所示:
D:\path\to\the\folder\named\Downloads
并且 firefox 配置文件确实已更新并保存在临时文件中。但看起来它没有加载,因此用于我的测试。 firefox配置文件的路径是这样的:
C:\Users\surname~1.name\AppData\Local\Temp\tmp83d29mnz
ofc 每次创建新配置文件时,都不是问题。如果我还可以设置我用 python 函数创建的这个 firefox 配置文件的路径,也许会很棒。
所以这里的问题是:
为什么下载对话框在我禁用后仍然显示?
firefox 配置文件可以保存在我定义的文件夹中吗?
好的,所以我发现了,缺少的部分是什么。
我在python函数中添加了这两行代码
fp.set_preference("browser.helperApps.alwaysAsk.force", False)
fp.set_preference("pdfjs.disabled", True)
所以函数的最终版本如下所示:
def disable_download_dialog(path):
from selenium import webdriver
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList", 2)
fp.set_preference("browser.download.manager.showWhenStarting", False)
fp.set_preference("browser.download.dir", path)
fp.set_preference("browser.helperApps.alwaysAsk.force", False)
fp.set_preference("browser.helperApps.neverAsk.saveToDisk",'application/pdf')
fp.set_preference("pdfjs.disabled", True)
fp.update_preferences()
return fp.path