Java Selenium:无法在Selenium中使用for循环上载文件
我想在网站上上传图片,我正在使用Java Selenium:无法在Selenium中使用for循环上载文件,java,selenium,xpath,file-upload,Java,Selenium,Xpath,File Upload,我想在网站上上传图片,我正在使用XPath来实现。使用我尝试过的for循环,执行循环,但不执行任何操作 请在下面找到我的代码: WebDriver driver=new FirefoxDriver( ); driver.get("https://www.netmeds.com/"); driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); drive
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);
}
WebDriver=newfirefoxdriver();
驱动程序。获取(“https://www.netmeds.com/");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
findelelement(By.xpath(“./*[@id='carousel-header']/div[1]/div/div[1]/div[3]/div/div[3]/button”)。单击();
对于(int i=1;i第1点——实际上您正在对错误的元素(即标签)执行sendkeys()
。它应该是一个带有type=file
的标记,然后只有您才能使用sendkeys()
方法上载文件
第2点-无需在多个地方提及隐式等待
。如果您在一个地方提及它,例如get(URL)之后,那么它适用于整个脚本。如果您需要一些等待,则使用显式等待
无论如何,请使用以下代码执行与您所需相同的操作:
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Test {
public static WebDriver driver;
public static void main(String[] args) throws InterruptedException
{
System.setProperty("webdriver.chrome.driver","Resources/chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://www.netmeds.com");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.findElement(By.xpath("//button[@title='Upload Prescription']")).click();
for(int i=1;i<5;i++)
{
driver.findElement(By.xpath("//input[@id='FileUpload"+i+"']")).sendKeys("C:\\LICENCE.jpg");
new WebDriverWait(driver, 60).until(ExpectedConditions.invisibilityOf(driver.findElement(By.id("loaderContainer"))));
System.out.println("File Upload "+ i + "Done");
}
}
}
import java.util.concurrent.TimeUnit;
导入org.openqa.selenium.By;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.chrome.ChromeDriver;
导入org.openqa.selenium.support.ui.ExpectedConditions;
导入org.openqa.selenium.support.ui.WebDriverWait;
公开课考试{
公共静态WebDriver;
公共静态void main(字符串[]args)引发InterruptedException
{
System.setProperty(“webdriver.chrome.driver”、“Resources/chromedriver.exe”);
驱动程序=新的ChromeDriver();
driver.manage().window().maximize();
驱动程序。获取(“https://www.netmeds.com");
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
findElement(By.xpath(//button[@title='Upload Prescription'])。单击();
for(int i=1;i在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");
}
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(“文件上传”+i+“成功”);
}
这对我很有效:)
第二,我可以使用webDriverwait
是不能使用标签执行sendkeys操作的xpath@iamsankalp89,一般情况下,您可以在文本框中输入文本,而不是在标签中输入文本,对吗?您的第三行显示错误“对于类型ExpectedConditions,未定义方法invisibilityOf(WebElement)”以及waitimport包中的哪个loaderContainer导入org.openqa.selenium.support.ui.ExpectedConditions;
已导入此导入org.openqa.selenium.support.ui.ExpectedConditions;