Selenium webdriver 使用Selenium webdriver时,“文件上载”按钮不起作用

Selenium webdriver 使用Selenium webdriver时,“文件上载”按钮不起作用,selenium-webdriver,Selenium Webdriver,我正在尝试将jpeg图像上载到我的应用程序。但在网页上,我们可以上传其他jpeg图像,以及在各自的部分。在这里,根据HTML,“上载”按钮具有为其他上载部分定义的相同属性 但是,当我检查xpath for Unique元素for Upload按钮时,我发现下面的xpath=//table/tbody/tr[1]/td[1]/div/div/div/input[@class='bttnUpload']]并使用xpath检查器进行了验证 下面是使用的Webdriver代码 WebDriver dri

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

但是,当我检查xpath for Unique元素for Upload按钮时,我发现下面的
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();
正在选择上载图像,但未单击上载按钮,因此我无法上载文件


你能帮我解决这个问题吗

我敢肯定这只是个打字错误。 以及上传定位器

(//input[@class='fleManuleUpload'] ->e.g. fleManualUpload )
至于上传按钮

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

一般来说:为什么不使用更一致的css定位器或ID

By.xpath("//input[@id='UserName']" 
易于使用:

By.id("UserName")


为了给您一个更好的答案,请在运行此操作时上载错误消息。

我敢肯定这只是一个输入错误。 以及上传定位器

(//input[@class='fleManuleUpload'] ->e.g. fleManualUpload )
至于上传按钮

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

一般来说:为什么不使用更一致的css定位器或ID

By.xpath("//input[@id='UserName']" 
易于使用:

By.id("UserName")


为了给您一个更好的答案,请在运行此操作时上载错误消息。

我敢肯定这只是一个输入错误。 以及上传定位器

(//input[@class='fleManuleUpload'] ->e.g. fleManualUpload )
至于上传按钮

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

一般来说:为什么不使用更一致的css定位器或ID

By.xpath("//input[@id='UserName']" 
易于使用:

By.id("UserName")


为了给您一个更好的答案,请在运行此操作时上载错误消息。

我敢肯定这只是一个输入错误。 以及上传定位器

(//input[@class='fleManuleUpload'] ->e.g. fleManualUpload )
至于上传按钮

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

一般来说:为什么不使用更一致的css定位器或ID

By.xpath("//input[@id='UserName']" 
易于使用:

By.id("UserName")


为了给您一个更好的答案,请在运行此操作时上载错误消息。

这背后的原因是:

FileUpload_FrontView.sendKeys("C:\\Users\\prabhakar.y\\Desktop\\Pics for Uploading\\Front_view.jpeg");
您在foldername中有空间-“上传图片”。 尝试给予

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

这个文件夹应该在您当前的工作区内(这是一个很好的做法)。或者从foldername中删除空格。

这背后的原因是:

FileUpload_FrontView.sendKeys("C:\\Users\\prabhakar.y\\Desktop\\Pics for Uploading\\Front_view.jpeg");
您在foldername中有空间-“上传图片”。 尝试给予

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

这个文件夹应该在您当前的工作区内(这是一个很好的做法)。或者从foldername中删除空格。

这背后的原因是:

FileUpload_FrontView.sendKeys("C:\\Users\\prabhakar.y\\Desktop\\Pics for Uploading\\Front_view.jpeg");
您在foldername中有空间-“上传图片”。 尝试给予

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

这个文件夹应该在您当前的工作区内(这是一个很好的做法)。或者从foldername中删除空格。

这背后的原因是:

FileUpload_FrontView.sendKeys("C:\\Users\\prabhakar.y\\Desktop\\Pics for Uploading\\Front_view.jpeg");
您在foldername中有空间-“上传图片”。 尝试给予

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


这个文件夹应该在您当前的工作区内(这是一个很好的做法)。或者从foldername中删除空格。

谢谢thomas,我已将xpath更改为ID。下面是HTML代码,不是打字错误
。我没有收到任何错误消息。@mthomasThen您也可以尝试在没有ID的情况下改进XPath。尝试:改为使用.cssSelector(“.bttnUpload”)。谢谢thomas,我已经将xpath更改为ID。下面是HTML代码,不是打字错误
。我没有收到任何错误消息。@mthomasThen您也可以尝试在没有ID的情况下改进XPath。尝试:改为使用.cssSelector(“.bttnUpload”)。谢谢thomas,我已经将xpath更改为ID。下面是HTML代码,不是打字错误
。我没有收到任何错误消息。@mthomasThen您也可以尝试在没有ID的情况下改进XPath。尝试:改为使用.cssSelector(“.bttnUpload”)。谢谢thomas,我已经将xpath更改为ID。下面是HTML代码,不是打字错误
。我没有收到任何错误消息。@mthomasThen您也可以尝试在没有ID的情况下改进XPath。请尝试:改为使用.cssSelector(“.bttnUpload”)。除非图像路径不正确,否则代码不会失败。我这边查过了。它工作得很好。事实上,这是点击上传按钮。你只需等待一段时间,就可以看到图片上传到照片的顶部。另外,为了更简洁,请尝试使用。除非映像路径不正确,否则代码不会失败。我这边查过了。它工作得很好。事实上,这是点击上传按钮。你只需等待一段时间,就可以看到图片上传到照片的顶部。另外,为了更简洁,请尝试使用。除非映像路径不正确,否则代码不会失败。我这边查过了。它工作得很好。事实上,这是点击上传按钮。你只需等待一段时间,就可以看到图片上传到照片的顶部。另外,为了更简洁,请尝试使用。除非映像路径不正确,否则代码不会失败。我这边查过了。它工作得很好。事实上,这是点击上传按钮。你只需等待一段时间,就可以看到图片上传到照片的顶部。此外,尝试使用,以获得更干净的方法..感谢您的及时回复..为迟回复道歉..我根据您的建议进行了更改..我在这里面临的问题不是wrt图像/文件选择。我可以看到图像被选中,但“上载”按钮未单击。但是在同一网页上,我们有相同类型的上载按钮,它们没有唯一属性。因此,我遍历了HTML树结构,找到了“上载”按钮的唯一属性,但在运行测试时。上载按钮未单击。因此,我恳请您建议我哪里出了问题。这是UI设计的问题吗?@VivekIs?我可以上传图像到您的网站。我使用selenium-2.44.0在FF31.0上运行了您的代码。你可以看到,我已经上传了一个图像到你的登录