Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.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
selenium上传文件java ChromeDriver/FirefoxDriver_Java_Selenium_Selenium Chromedriver - Fatal编程技术网

selenium上传文件java ChromeDriver/FirefoxDriver

selenium上传文件java ChromeDriver/FirefoxDriver,java,selenium,selenium-chromedriver,Java,Selenium,Selenium Chromedriver,我正在尝试自动化一个上传图片的测试。我可以在“标题”框中添加文本,但当我输入文件位置时,我可以成功输入文本,但网站告诉我,我没有上载有效的.jpg文件。当我手动执行测试时,我无法输入文本,但我可以浏览文件并成功上传。这是我的密码: driver.findElement(By.xpath("//input[@id='FakeInputName2']")).sendKeys("C:\\Users\\MyUsername\\Pictures\\Lighthouse.jpg"); 以下是HTML代码

我正在尝试自动化一个上传图片的测试。我可以在“标题”框中添加文本,但当我输入文件位置时,我可以成功输入文本,但网站告诉我,我没有上载有效的.jpg文件。当我手动执行测试时,我无法输入文本,但我可以浏览文件并成功上传。这是我的密码:

 driver.findElement(By.xpath("//input[@id='FakeInputName2']")).sendKeys("C:\\Users\\MyUsername\\Pictures\\Lighthouse.jpg");
以下是HTML代码的外观:

<tr>
<td align="right"> Image: </td>
<td>
    <div id="RenamedUpload1" class="RenameUpload RenameUpload RenameUpload_Office2007">
        <ul id="RenameUpload1ListContainer" class="renamedInputs">
            <li id="RenameUpload1row0">
                <span class="blerghFileWrap blerghStyled">
                    <input id="FakeInputName" class="renamedThisFakeInput somethingNoDecorate" type="text" tabindex="-1" size="67">
                    <label for="FakeInputName" style="display:none">label</label>
                    <input class="notButton notBrowse" type="button" tabindex="-1" value="Select" style="border: 0px dotted;">
                    <input id="FakeInputName2" class="notFileInput" type="file" tabindex="0" name="FakeInputName2" size="68">
                    <label for="FakeInputName2" style="display:none">label</label>
                </span>
            </li>
        </ul>
    </div>
</td>
“*.jpeg”-文件不是有效的.jpg文件

你能至少显示文件上传的html代码吗

您确定JVM有权访问该文件吗?也许您应该将该文件添加到资源文件夹中。如果您的文件存储在“[…]\workspace\projcetname\src\test\resources”中,则应该可以:

String pathToUpload = "/Lighthouse.jpg";
URL url = MYCLASSNAME.class.getResource(pathToUpload);
String filePath = url.getFile();
System.out.print(filePath);
File imgToUpload = new File(filePath);
String absolutePath = imgToUpload.getAbsolutePath();
System.out.print(absolutePath);
driver.findElement(By.xpath("//input[@id='FakeInputName2']")).sendKeys(absolutePath);
System.out.print(driver.getPageSource());

小心:“Myclass”必须替换为您当前的类名。

不幸的是,这不起作用,它甚至没有在文本框中输入路径。我试着用jpeg和jpg,但我现在用的是jpg。这不应该把路径输入到“//input[@id='FakeInputName']”,它应该把文件路径添加到文件上传输入中。我在上面的代码中添加了一些输出。我应该帮你找到问题。您确定您的ID是唯一的吗?”findElement'采用符合副描述的第一个元素。我是否缺少一段代码?它甚至没有到达xpath。它在文件imgToUpload=new File处抛出NullPointerException。。。线路。是的,我更改了我的类以反映我的类名。会因为我的类扩展了一个抽象类而生气吗?我不认为抽象类会是个问题。我想路径就是问题所在。img的绝对路径是什么?C:\Users\MyUser\Pictures\Lighthouse.jpg有效,C:\Users\MyUser\stuff\projName\projectName\projectName\src\test\resources\Lighthouse.jpg也有效。此时,我将文件存储在多个位置。当然,我的代码使用双斜杠。
String pathToUpload = "/Lighthouse.jpg";
URL url = MYCLASSNAME.class.getResource(pathToUpload);
String filePath = url.getFile();
System.out.print(filePath);
File imgToUpload = new File(filePath);
String absolutePath = imgToUpload.getAbsolutePath();
System.out.print(absolutePath);
driver.findElement(By.xpath("//input[@id='FakeInputName2']")).sendKeys(absolutePath);
System.out.print(driver.getPageSource());