使用Selenium webdriver无法使用“文件上载”按钮

时间:2015-01-15 13:56:22

标签: selenium-webdriver

我尝试将jpeg图片上传到我的应用程序。但是在网页上我们也可以在各自的部分上传其他jpeg图像。根据HTML,“上传”按钮具有为其他上传部分定义的相同属性。

但是,当我检查上传按钮的唯一元素的xpath时,我找到了下面的xpath=//table/tbody/tr[1]/td[1]/div/div/div/input[@class='bttnUpload']并使用xpath检查器进行了验证

以下是使用的Webdriver代码

WebDriver driver=new FirefoxDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
//Test URL
driver.get("URL");

// UN & PWD
driver.findElement(By.xpath("//input[@id='UserName']")).clear();
driver.findElement(By.xpath("//input[@id='UserName']")).sendKeys("UN");
driver.findElement(By.xpath("//input[@id='Password']")).clear();        
driver.findElement(By.xpath("//input[@id='Password']")).sendKeys("pwd");
driver.findElement(By.xpath("//input[@id='btnSubmit']")).click();


//Validate the  User logged in 
if(driver.getPageSource().contains("UN Kumar"))
System.out.println("UN is logged in");
else
System.err.println("UN not logged in");



//Click on Asset Menu and LookUp Assets sub menu
Actions action = new Actions(driver);
 action.moveToElement(driver.findElement(By.xpath("//a[@href='http://ccqweb1.cloudapp.net//Main.aspx?    MenuId=15']"))).build().perform();
driver.findElement(By.linkText("Lookup Assets")).click();



//Search for Loan Number 
driver.findElement(By.xpath("//input[@id='ctl10_txtLoannumber']")).sendKeys("787878717");
driver.findElement(By.xpath("//input[@id='ctl10_cmdSearch']")).click();
Thread.sleep(2000);



// Get the window handle before clicking on link
String winHandleBefore = driver.getWindowHandle();

//Click on Initial Occupancy task
driver.findElement(By.xpath("//a[@id='ctl09_gvPendingTasks_ctl02_lnkTask']")).click();
Thread.sleep(2000);

// Switch to New Window 
String child = driver.getWindowHandle();
for(String parent : driver.getWindowHandles()){
    driver.switchTo().window(parent);
}


/**Exterior Photos tab **/

//Click on Exterior tab 
driver.findElement(By.xpath("//a[@id='ctl09_btnExteriorPhotos']")).click();


//Front View* `enter code here`

//Click  on Manual Upload button
driver.findElement(By.xpath("//div/input[@onclick='DisplayManualUpload(event)']")).click();

WebElement FileUpload_FrontView= driver.findElement(By.xpath("//input[@class='fleManuleUpload']"));
FileUpload_FrontView.sendKeys("\\Front_view.jpeg");
Thread.sleep(500);

driver.findElement(By.xpath("//table/tbody/tr[1]/td[1]/div/div/div/input[@class='bttnUpload']")).click();

上传图片已被选中但未点击上传按钮,因此无法上传文件。

你可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

我很确定这只是一个错字。 以及上传定位器

(//input[@class='fleManuleUpload'] ->e.g. fleManualUpload )

上传按钮

([@class='bttnUpload'] -> btnUpload ).


一般情况:为什么不使用更一致的css定位器或仅使用ID?

By.xpath("//input[@id='UserName']" 

轻松使用:

By.id("UserName")


为了给您更好的答案,请在运行时上传错误消息。

答案 1 :(得分:1)

背后的原因是:

FileUpload_FrontView.sendKeys("C:\\Users\\prabhakar.y\\Desktop\\Pics for Uploading\\Front_view.jpeg");

你在foldername中有空间 - “Pics for Uploading”。 尝试给出

File f = new File("Pics for Uploading\\Front_view.jpeg");
FileUpload_FrontView.sendKeys(f.getAbsolutePath());

此文件夹应位于当前工作区内(一个好习惯)。或者从foldername中删除空格。