WebDriver Selenium浏览文件Java

时间:2015-06-17 07:37:46

标签: java eclipse junit webdriver

无法使用webdriver浏览文件。

driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
driver.findElement(By.id("1434461513889_57_7_input.file")).sendKeys("C:\\PDF_V1_COL88810_6L_Frangipani_TL_Fr_P1211089.pdf");

出现此错误:

  

NoSuchElementException:无法找到元素:{"方法":" id","选择器":" BatchUploadPlugin_57_fileupload"}

HTML code

5 个答案:

答案 0 :(得分:0)

请以下列方式:

driver.findElement(By.id("1434461513889_57_7_input")).sendKeys("C:\\PDF_V1_COL88810_6L_Frangipani_TL_Fr_P1211089.pdf");

.File 元素不应该在id中。

答案 1 :(得分:0)

我不是selenium的专家,但看起来你发布的代码片段无法抛出此异常。当它搜索BatchUploadPlugin_57_fileupload时,它是表单ID。您的代码正在搜索输入,其ID为1434461513889_57_7_input

我还发现,driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);可能无法像these开发人员那样正常工作。尝试将其替换为Thread.sleep(3000);。我知道硒不推荐线程睡眠,只是为了测试。

答案 2 :(得分:0)

尝试以下代码.. 你需要传递上传文本框webelement和上传按钮webelement ..

public void UploadFile(By locatorUpload, By locatorButton, String filePath){

        driver.findElement(locatorUpload).sendKeys(filePath);
        waitForElementClickable(driver, locatorButton, 4);
        driver.findElement(locatorButton).click();

    }

public void waitForElementClickable(WebDriver driver, By locator, Integer timeoutInSeconds){
    WebDriverWait wait = new WebDriverWait(driver, timeoutInSeconds);
    wait.until(ExpectedConditions.elementToBeClickable(locator));
}

答案 3 :(得分:0)

从您提供的屏幕截图中,我可以看到相关元素位于iframe中。

(检查栏下面的开发者工具中的第二个栏,其中包含:检查员,控制台等。您将注意到iframe#iframe_1434526152814_57_7。)。

因此,您无法向其发送路径。

要发送上传路径,您需要先切换到相框,然后将路径发送到元素“浏览”进行上传。

对于切换框架,您可以使用以下代码我可以从屏幕截图中看到的帧ID,iframe_1434526152814_57_7我可以安全地假设是动态的,不能用作切换到的帧的ID。因此,我假设页面中只有1帧,因此代码。

driver.switchTo().frame(0);

然后,使用以下代码将路径发送到元素

driver.findElement(By.xpath("//input[@name='userfile']")).sendKeys("C:\\PDF_V1_COL88810_6L_Frangipani_TL_Fr_P1211089.pdf");

答案 4 :(得分:-1)

对于处理原生元素,为什么不能尝试使用Selenium脚本进行Sikuli集成。 您可以参考此链接了解更多详情。 http://selenium-suresh.blogspot.in/2014/01/sikuli-automation-tool-integration-with.html