Загрузка файла не работает в IE, когда тест выполняется на сервере Jenkins - PullRequest
0 голосов
/ 04 мая 2020

Я автоматизирую веб-приложение, где у меня есть функция загрузки для автоматизации с использованием селена. Когда я запускал тест локально, он отлично работал в 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...