Selenium:无法在Selenium中使用for循环上传文件

时间:2017-09-02 12:38:10

标签: 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);
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);

}

2 个答案:

答案 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