我想在网站上传图片,我正在使用XPath
来执行此操作。使用for循环我试过,循环执行但没有执行任何操作。
请在下面找到我的代码:
WebDriver driver=new FirefoxDriver( );
driver.get("https://www.netmeds.com/");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.findElement(By.xpath(".//*[@id='carousel-header']/div[1]/div/div[1]/div[3]/div/div[3]/button")).click();
for (int i=1;i<5;i++) {
driver.findElement(By.xpath(".//*[@id='lbl"+i+"']")).sendKeys("C:\\Users\\sys\\Downloads\\1.png");
System.out.println("upload");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
答案 0 :(得分:2)
第1点 - 实际上您正在对错误的元素(即标签)进行sendkeys()
。它应该是带有<input>
的{{1}}标记,然后您才能使用type=file
方法上传文件
第2点 - 无需提及sendkeys()
多一个地方。如果你在一个地方提到它,例如在get(URL)之后,它适用于整个脚本。如果您需要等待,请使用ImplicitWait
无论如何,使用以下代码执行相同的操作:
ExplicitWait
我已经测试过了,我可以上传所有4张图片。如果您对此有任何疑问,请与我们联系:)
答案 1 :(得分:-1)
在for循环中尝试此代码:
for(int i = 1; i < 5; i++){
driver.findElement(By.xpath("//input[@id='FileUpload" + i + "']")).sendKeys("C:\\a.jpg");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
System.out.println("File Upload "+ i + "successfully");
}
它适用于我:)
第二我可以使用webDriverwait