2013-09-26 161 views
-1
WebElement UploadImg = driver.findElement(By.xpath("//*[@id='file_upload_button']")); 
    UploadImg.click(); 
    WebElement frame =driver.switchTo().activeElement(); 
    frame.sendKeys("d:\5.jpg"); 

该代码只需打开系统窗口,但它并没有选择任何照片/文件如何使用“上传图片按钮”上传文件/图片中硒的webdriver

+0

嗨。您不能使用硒自动化任何基于Windows的对话框/窗口。 Selenium仅适用于浏览器。如果要上传文件,请使用sendkeys方法键入文件的路径并按下提交按钮。 – Vinay

+0

@ user2798616您是否在UploadImage按钮旁边有一个文本框,用于输入您要上传的文件的路径?如果你有,那么不需要点击上传按钮。直接使用sendKeys将文件路径粘贴到该文本框中。 – Hemanth

+0

@Vinay:网站上没有任何文本框旁边的UploadImage按钮进入路径...!它只是有按钮,所以我怎么能发送路径使用这个按钮 – Niyati

回答

3

试着改变你的代码:

WebElement UploadImg = driver.findElement(By.xpath("//*[@id='file_upload_button']")); 
    UploadImg.sendKeys("d:\5.jpg"); 
+0

我已经试过这个,它不工作:( – Niyati

3

Kyop的答案是正确的,尽管为了实现这个功能,您发现的元素需要采用<input type="file" id="file_upload_button">的形式。您可以发布相关代码的HTML代码段来验证这一点吗?

此外,为什么使用XPath查找id变得复杂?与仅使用driver.findElement(By.id("file_upload_button"))相比,有什么好处吗?

来源:this post

+0

不能,kyop的代码不起作用,你可以通过链接“:http://classifieds.sandhira.com/form/boats-or-ships/post-classified”来检查,因为我想用这个上传图片上传图片按钮'页 – Niyati

+0

尝试;'WebElement UploadImg = driver.findElement(By.id(“file_upload”));'。你需要使用'type =“file”'not'type =“button”'来定位输入。 –

+0

可以使用上面提到的链接,因为我无法处理这个。 – Niyati

4

运行这段代码:

JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("arguments[0].setAttribute('style', arguments[1])",` driver.findElement(By.xpath("//input[@type='file']")), "0"); 
js.executeScript("arguments[0].setAttribute('class', arguments[1])", driver.findElement(By.xpath("//input[@type='file']/../../div[2]")), "a"); 
driver.findElement(By.xpath("//input[@type='file']")).sendKeys("Your Path to the file your system"); 

说明:每个浏览按钮在隐藏状态在DOM一<input>标签。通过使用下面的代码行,我们只需更改包含<input>标签的标签的类和样式属性,以使其变得可见并且可以对其执行sendKeys()命令。之后,当你做一个sendKeys与你想上传的图像/文件的绝对路径。