无法使用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"}
答案 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