2017-02-20 33 views
0

У меня есть веб-приложение, использующее Outsystem для UI. Так кнопку Файл для загрузки имеет тип = «Отправить», а не тип = «файл», следовательно, код селенаЗагрузите файл с помощью selenium webdriver БЕЗ использования API-интерфейса Robot API или команды отправки selenium

driver.findElement(By.id("browse")).sendKeys("/path/to/the/file"); 

, используемый для загрузки файла не работает для меня. Я попытался код робота API, а

WebElement ele = driver.findElement(By.id("Browse")); 
ele.click();  
StringSelection ss = new StringSelection(FilePath); 
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);          
Robot robot = new Robot(); 
robot.keyPress(KeyEvent.VK_CONTROL); 
robot.keyPress(KeyEvent.VK_V); 
robot.keyRelease(KeyEvent.VK_V); 
robot.keyRelease(KeyEvent.VK_CONTROL); 
Thread.sleep(500); 
robot.keyPress(KeyEvent.VK_ENTER); 
robot.keyRelease(KeyEvent.VK_ENTER);  

который иногда работает нормально, но неисправного большую часть времени, потому что фокус удаляется из окна. Мой скрипт будет работать в течение длительного времени, в таком случае сохранение фокуса всегда в окне не является осуществимой идеей. Может ли кто-нибудь предложить мне любой другой способ решить проблему загрузки файла в Selenium?

+0

Перед загрузкой файла попробуйте добавить явное ожидание, а затем перейдите к вашему коду. –

+0

@jainishkapadia явное ожидание на чем? У меня мало ожиданий, прежде чем робот будет определен, и после того, как я нажму на enter. но когда откроется окно загрузки файла, как я могу подождать? Есть ли какой-нибудь код, чтобы сосредоточиться на окне загрузки? –

+0

Поделитесь своим «HTML» –

ответ

0

Я понимаю, что вы не можете дождаться появления всплывающего окна загрузки, поскольку мы не можем дать явное ожидание появления окна, я решил эту проблему, поставив Thread.sleep(2000) перед тем, как вы инициируете класс Robot так что всплывающее окно может появиться до того, как мы начнем работать с ним.