Я автоматизирую веб-приложение, где у меня есть функция загрузки для автоматизации с использованием селена. Когда я запускал тест локально, он отлично работал в Chrome, Firefox и IE. Но когда я запускал тест на сервере Jenkin, который запускается на IE, он зависает при загрузке файла.
Ниже приведен код, который я использовал для загрузки файла,
public void uploadDocuments() throws InterruptedException {
String textFilePathIos = FileManager.getInstance().getConfigReader().gettestDataResourcePathIos()
+ "UploadTestFile.txt";
String textFilePathWindows = FileManager.getInstance().getConfigReader().gettestDataResourcePathWindows()
+ "UploadTestFile.txt";
IframeHelper iframeHelper = new IframeHelper(driver);
iframeHelper.switchToIFrameOnlinePortal();
// Click on "Select file(s)" button
WebElement divClass = WebElementExtension.WaitForElementCSS(driver, "div[class='file-input-wrapper centered']",
60);
WebElement buttonSelectFiles = divClass.findElement(By.name("$PpyAttachmentPage$ppxAttachName"));
JavascriptHelper javascriptHelper = new JavascriptHelper(driver);
javascriptHelper.scrollToViewElement(buttonSelectFiles);
buttonSelectFiles.sendKeys(fPath);
iframeHelper.switchToParentWindow();
}
Даже я пытался запустить скрипт вручную на сервере Jenkins, и он работает нормально, но я не могу найти, почему он зависает только для IE при запуске на сервере.
Затем я использовал класс Robot, он откроет проводник файлов windows, но не вставит путь к файлу и не откроет файл из целевой папки.
Ниже приведен код, который я использовал для этого,
public void uploadDocuments() throws InterruptedException {
String textFilePathIos = FileManager.getInstance().getConfigReader().gettestDataResourcePathIos()
+ "UploadTestFile.txt";
String textFilePathWindows = FileManager.getInstance().getConfigReader().gettestDataResourcePathWindows()
+ "UploadTestFile.txt";
IframeHelper iframeHelper = new IframeHelper(driver);
iframeHelper.switchToIFrameOnlinePortal();
// Click on "Select file(s)" button
WebElement divClass = WebElementExtension.WaitForElementCSS(driver, "div[class='file-input-wrapper centered']",
60);
WebElement buttonSelectFiles = divClass.findElement(By.name("$PpyAttachmentPage$ppxAttachName"));
JavascriptHelper javascriptHelper = new JavascriptHelper(driver);
javascriptHelper.scrollToViewElement(buttonSelectFiles);
String os = System.getProperty("os.name").toLowerCase();
if (os.contains("mac")) {
File file = new File(textFilePathIos);
buttonSelectFiles.sendKeys(file.getAbsolutePath());
} else {
File file = new File(textFilePathWindows);
String fPath = file.getAbsolutePath();
fPath = fPath.replace("/", "\\");
StringSelection selection = new StringSelection(file.getAbsolutePath());
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selection, selection);
Robot robot = new Robot();
robot.delay(250);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.delay(150);
robot.keyRelease(KeyEvent.VK_ENTER);
}
iframeHelper.switchToParentWindow();
}