2017-09-28 1 views
0

파일을 업로드하려고하는 애플리케이션이 있습니다. Robot 클래스를 사용하여 파일 업로드를 수행합니다. 업로드 할 파일이 성공적으로 선택되고 "파일 추가"버튼을 클릭 한 후에 업로드해야합니다. 유사한 파일 업로드 기능이 있고 파일이 성공적으로 업로드되는 응용 프로그램의 다른 영역이 있습니다. 한 특정 영역에서 파일 추가 버튼을 클릭 한 후 "파일을 업로드하는 동안 기술적 인 오류가 발생했습니다"UI에 오류가 발생합니다. 나는 다양한 리소스를 통해 읽었으며 Thread.sleep, Explicit Wait with wait.until (예상 조건)을 사용해 보았지만 아무것도 작동하지 않는 것 같습니다. 여기 잠시 동안 붙어있어. 응용 프로그램의 다른 영역에서 같은 코드가 파일을 성공적으로 업로드합니다. 이 코드는 디버그 모드에서 잘 작동하지만 런타임 중에는 "파일 추가"버튼을 클릭하지만 실제로 파일을 업로드하지는 않습니다. 코드의 스냅 샷 : 당신의 DOM이 '입력 유형 = "파일"'같은 경우Selenium WebDriver-Java - 파일 추가 버튼을 클릭하여 파일 업로드를 클릭 한 후 파일 업로드가 실패했습니다.

try{ 
    System.out.println(filePath); 
    File file = new File(filePath); 
    System.out.println(file.getAbsolutePath()); 
    StringSelection ss = new StringSelection(file.getAbsolutePath()); 
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null); 
    Robot robot = null; 
    robot = new Robot(); 
    robot.keyPress(KeyEvent.VK_CONTROL); 
    robot.keyPress(KeyEvent.VK_V); 
    robot.keyRelease(KeyEvent.VK_V); 
    robot.keyRelease(KeyEvent.VK_CONTROL); 
    robot.delay(3000); 
    robot.keyPress(KeyEvent.VK_ENTER); 
    robot.keyRelease(KeyEvent.VK_ENTER); 

    } 
    catch (AWTException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
     } 
    bStatus=Wait.waitForElementVisibility(By.xpath(Locators.Campaings.FilesTab.completeFileLoadXpath), 90); 
    if(!bStatus) return bStatus; 

    //add files 
    WebDriverWait wait = new WebDriverWait(driver, 10000); 
    wait.until(ExpectedConditions.elementToBeClickable(By.xpath(Locators.Campaings.TaskTab.taskDetailsUploadFilesBtnXpath))); 

    bStatus=Elements.clickElement(By.xpath(Locators.Campaings.TaskTab.taskDetailsUploadFilesBtnXpath)); 
    if(bStatus) 
    { 
     Thread.sleep(20000); 
    } 

    //WebDriverWait wait = new WebDriverWait(driver,10); 
       //wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath(Locators.HomePage.MainHeader.MenuLinks.img_Loading_Grid)))); 
    //bStatus = Wait.waitForElementVisibility(By.xpath(".//*[@id='edit- task-details-modal']//tr//td[1]"), 60); 
    //if(!bStatus) return bStatus; 
    //TimeUnit.SECONDS.sleep(60);   
    //bStatus=Wait.waitForNoWebElement(By.xpath(Locators.HomePage.MainHeader.MenuLinks.img_Loading_Grid),60); 
    //if(!bStatus) return bStatus; 

String actual_Message=Elements.getText(By.id(Locators.Campaings.TaskTab.taskDetailsFileUploadSuccessMessageId)); 

답변

0

업로드 파일의 경우, 은 그럼 당신은 셀레늄의 sendkey 기능을 사용할 수 있습니다.

관련 문제