Как скачать и сохранить Excel и PDF-файл из всплывающего окна в нужном месте, используя Selenium, написанный на C#
Я хотел бы знать, есть ли какой-нибудь способ для автоматических тестов загрузить файл (Excel и PDF в моем случае) и сохранить в нужном месте с помощью веб-драйвера selenium. Я пытался использовать профиль Firefox, но это не сработало. Когда тест выполняется, появляется всплывающее окно с вопросом, открыть ли файл или сохранить его. Поэтому, когда мы нажимаем кнопку, я не хочу, чтобы всплывающее окно отображалось, вместо этого автоматически разрешается его загрузка в желаемом месте (как локально, так и на Selenium Server). Мы используем C# для написания тестов. Прилагается всплывающее окно. Может ли кто-нибудь помочь с этим?
public static IWebDriver Build(SeleniumInstanceContext context)
{
IWebDriver instance;
var capabilities = new DesiredCapabilities();
var profile = CreateFirefoxProfile();
//Pass the Firefox profile to be used by RemoteWebDriver
capabilities.SetCapability(FirefoxDriver.ProfileCapabilityName, profile.ToBase64String());
switch (context.TestingBrowser.ToUpperInvariant())
{
case "CHROME":
instance = context.SeleniumEnvironment.ToUpper() == "REMOTEWEBDRIVER"
? new RemoteWebDriver(new Uri(context.SeleniumServerUrl), DesiredCapabilities.Chrome())
: new ChromeDriver();
break;
case "IE":
instance = context.SeleniumEnvironment.ToUpper() == "REMOTEWEBDRIVER"
? new RemoteWebDriver(new Uri(context.SeleniumServerUrl),
DesiredCapabilities.InternetExplorer())
: new InternetExplorerDriver();
break;
default:
instance = context.SeleniumEnvironment.ToUpper() == "REMOTEWEBDRIVER"
? new RemoteWebDriver(new Uri(context.SeleniumServerUrl), capabilities,
TimeSpan.FromMinutes(5))
: new FirefoxDriver(profile);
break;
}
return instance;
}
[![enter image description here][1]][1]public static FirefoxProfile CreateFirefoxProfile()
{
//Create FireFox Profile object
var profile = new FirefoxProfile();
//Set Location to store files after downloading.
const string path = "C:\\Users\\abc.xyz\\Downloads";
profile.SetPreference("browser.download.dir", path);
profile.SetPreference("browser.download.folderList", 2);
//Set Preference to not show file download confirmation dialogue using MIME types Of different file extension types.
profile.SetPreference("browser.helperApps.neverAsk.saveToDisk", "text/csv,application/x-msexcel,application/excel,application/x-excel,application/excel,application/x-excel,application/excel,application/vnd.ms-excel,application/x-excel,application/x-msexcel,application/csv");
//profile.SetPreference("browser.helperApps.neverAsk.openFile", "application/octet-stream");
//profile.SetPreference("browser.download.manager.showWhenStarting", false);
profile.SetPreference("pdfjs.disabled", true);
profile.SetPreference("browser.download.alertOnEXEOpen", false);
profile.SetPreference("browser.download.manager.focusWhenStarting", false);
profile.SetPreference("browser.helperApps.alwaysAsk.force", true);
profile.SetPreference("browser.download.manager.alertOnEXEOpen", false);
profile.SetPreference("browser.download.manager.closeWhenDone", false);
profile.SetPreference("browser.download.manager.showAlertOnComplete", false);
profile.SetPreference("browser.download.manager.useWindow", false);
return profile;
}
2 ответа
- Загрузите профиль Firefox, который вы используете для тестирования, попробуйте скачать любой файл.xls - вы увидите это всплывающее окно.
- Установите флажок и загружайте файл так, как вы хотите, чтобы он загружался в ваших автотестах.
В следующий раз, когда вы откроете Firefox с этим профилем в ходе автотестов, эти xls файлы будут загружены без всплывающего окна.
Похоже, вы забыли включить некоторые типы MIME в browser.helperApps.neverAsk.saveToDisk
предпочтение.
Вот типы MIME для .xls
, .xlsx
, а также .pdf
Расширения файлов:
.xls
-application/excel
.xls
-application/vnd.ms-excel
.xls
-application/x-excel
.xls
-application/x-msexcel
.xlsx
-application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.pdf
-application/pdf
Рекомендации:
- https://www.sitepoint.com/mime-types-complete-list/
- https://blogs.msdn.microsoft.com/vsofficedeveloper/2008/05/08/office-2007-file-format-mime-types-for-http-content-streaming-2/
Чтобы скрыть это всплывающее окно для .xls
, .xlsx
, а также .pdf
Расширения файлов, добавьте типы MIME, разделенные запятой:
string[] mimeTypes = new string[]
{
// .xls
"application/excel",
"application/vnd.ms-excel",
"application/x-excel",
"application/x-msexcel",
// .xlsx
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
// .pdf
"application/pdf"
};
FirefoxProfile profile = new FirefoxProfile();
profile.SetPreference("browser.helperApps.neverAsk.saveToDisk",
string.Join(",", mimeTypes));