Проблема (Вопрос) заключается в том, что надо считать контент PDF файла. Selenium C# тесты запускаются на Jenkins (Windows Server) и ранятся в докер контейнере с Chrome через Selenoid (Ubuntu Server).
Локально у себя на машине я знаю как это сделать: сохранить pdf файл у себя на Windows машине и считать его или открыть pdf файл в отдельной вкладке и сделать Ctrl+A, Ctrl+C и считать текст с clipboard. А вот как сделать это в докер контейнере не знаю.
Пробовал тоже Ctrl+A, Ctrl+Shift+C и считать текст с clipboard, но ничего не вышло.
Как и куда скачать pdf-файл и считать его не знаю, поскольку тесты ранятся на Windows сервере и доступ будет к папкам только с Windows сервера.
Кто сталкивался с такой проблемой и имеет решение?
Я наверное неправильно объясняюсь. Исполняемый файл находится на Windows Server. Там же находится Jenkins. Тесты выполняются с помощью RemoteDriver подключаясь к Selenoid на Ubuntu Server в Chrome докер контейнере.
Объясните, что значит volume каталог? Можно пример?
Сергей, спасибо за совет, но в заголовке написано, что проект C#, а вы даете библиотеку Java. Вопрос не стоит, как прочитать текст из файла. Вопрос стоит, можно ли скопировать содержимое pdf файла на закладке в clipboard или куда сохранить файл и как к нему доступиться?
Владислав, если Вас не затруднит, могли бы немного рассписать, какие комманды нужно будет выполнить и как доступится с Windows сервера с Jenkins к этой папке?
Пока нашел решение, как скопировать данные с clipboard докер контейнера. Но это больше костыли. Правильнее было б скачать файл и считать его.
Делаю клик на табе с документом, Ctrl+A, Ctrl+Shift+C, дальше получаю ответ с запроса к clipboard.
new Actions(driver).MoveToElement(driver.FindElement(By.TagName("body")), 100, 100)
.Click()
.Perform();
new Actions(driver).KeyDown(Keys.Control)
.SendKeys("a")
.KeyUp(Keys.Control)
.Perform();
new Actions(driver).KeyDown(Keys.Control)
.KeyDown(Keys.Shift)
.SendKeys("c")
.KeyUp(Keys.Control)
.KeyUp(Keys.Shift)
.Perform();
//сессия Selenoid
string sessionId = ((RemoteWebDriver)driver).SessionId.ToString();
//адресс к Selenoid clipboard
//http://selenoid-host.example.com:4444/clipboard/f2bcd32b-d932-4cdc-a639-687ab8e4f840
string url = "http://selenoid-host.example.com:4444/clipboard/" + sessionId;
using (var wb = new WebClient())
{
text = wb.DownloadString(url);
}
по поводу получегия файла докумена - есть ссылка со страницы которую вы тестируете ? она что - защищена и требует пользовательской сессии чтобы получить файл ?
Привет.
Давай по порядку
Скачать файл с селеноида, как это сделать:
Установить парметры для профиля (нужно гуглить для C# приведу пример для Джавы)
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption(“prefs”, new HashMap<String, Object>(){
{
put(“profile.default_content_settings.popups”, 0);
put(“download.default_directory”, “/home/selenium/Downloads”);
put(“download.prompt_for_download”, false);
put(“download.directory_upgrade”, true);
put(“safebrowsing.enabled”, false);
put(“plugins.always_open_pdf_externally”, true);
put(“plugins.plugins_disabled”, new ArrayList(){
{
add(“Chrome PDF Viewer”);
}
});
}
});