Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Selenium:无法在Selenium中使用for循环上载文件_Java_Selenium_Xpath_File Upload - Fatal编程技术网

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;