2016-04-29 16 views
0

我想從本地上傳文件而不使用Auto it工具。所以我用Action event來點擊瀏覽按鈕。我對下面的代碼發送使用sendKeys文件的路徑:org.openqa.selenium.UnhandledAlertException:模態對話框存在:

"driver.findElement(By.xpath("//input[@type='file']")).sendKeys("path of file");" 

我得到"org.openqa.selenium.UnhandledAlertException: Modal dialog present: "錯誤。

我無法處理這個異常。

請任何人能幫助我在做這個...

+1

我認爲有一個彈出窗口,你需要關閉它之前sendkeys。 – noor

+0

元素可能正在填充。嘗試與a)driver.manage()。timeouts()。implicitlyWait(60,TimeUnit.SECONDS); (或b) WebElement element = driver.findElement(By.id(「ELEMENT_ID」)); wait.until(ExpectedConditions.visibilityOf(element)); – AVA

回答

0

您必須關閉發送鍵之前,你所得到的警報。你可以這樣來做:

Alert alert = driver.switchTo().alert(); 
// Prints text and closes alert 
System.out.println(alert.getText()); 
alert.accept(); // or alert.dismiss(); 

,或者如果你不需要的信息你可以做

alert.accept(); 

編輯

另一種方法可以做到這一點,是包你的代碼在try-catch裏面:

try{ 
    driver.findElement(By.xpath("//input[@type='file']")).sendKeys("path of file"); 
} catch(UnhandledAlertException e){ 
    Alert alert = driver.switchTo().alert(); 
    alert.accept(); 
    driver.findElement(By.xpath("//input[@type='file']")).sendKeys("path of file"); 
} 

這顯然是一個髒解決方案,但你可以用它來檢查上面的代碼是否適合你。然後你可以根據你的需要自行清理它。

+0

嗨Aurasphere,謝謝你的答案..我也試過這個警報,但它沒有處理。像控制檯中顯示「沒有警報存在」的錯誤信息 – sajju

+0

同樣的錯誤顯示「線程中的異常」main「org.openqa .selenium.UnhandledAlertException:模態對話框出現:「 – sajju

+0

這很奇怪。我懷疑問題在於,無論何時關閉警報,都會彈出另一個警報。你可以手動檢查這個嗎?另外,您是否可以報告有關您正在收到的警報的更多信息?謝謝。 – Aurasphere