使用 selenium webdriver 上传图片
Image upload with selenium webdriver
在 java 中使用 selenium 网络驱动程序。我有一个图像上传控件,我需要使用它来上传图像。我通过传递无效的图像路径尝试了 .sendKeys 方法。
我已经尝试过机器人 class,首先单击打开 Window 的按钮(windows 本机 window)但它没有在 "File Name" 中键入键面积
<fieldset class="fieldset-company_logo post-fieldSet">
<label for="company_logo">Opportunity image:</label>
<div class="field">
<div class="upload-button">
<button class="button">Choose File</button>
<span>No file chosen</span>
<input class="input-text" name="company_logo" id="company_logo" placeholder="" type="file">
</div>
<small class="description"> Max. file size: 2MB. Allowed file format: jpg, gif, png </small>
</div>
</fieldset>
我找到了问题的解决方案,请查看以下详细信息:
将数据设置到剪贴板的功能,我将使用它来设置图像路径到剪贴板,稍后我将在模型上使用 window:
public static void setClipboardData(String string) {
StringSelection stringSelection = new StringSelection(string);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
}
现在查看这些代码行
WebElement upload_btn = driver.findElement(By.xpath(choose_file_btn_xpath));
Thread.sleep(4000);
setClipboardData(selected_image_path);
Actions builder = new Actions(driver);
Action myAction = builder.click(upload_btn).release().build();
myAction.perform();
Robot rbt = new Robot();
rbt.delay(4000);
rbt.keyPress(KeyEvent.VK_CONTROL);
rbt.keyPress(KeyEvent.VK_V);
rbt.keyRelease(KeyEvent.VK_V);
rbt.keyRelease(KeyEvent.VK_CONTROL);
rbt.keyPress(KeyEvent.VK_ENTER);
rbt.keyRelease(KeyEvent.VK_ENTER);
rbt.delay(4000);
driver.findElement(By.xpath(submit_button_xpath)).click();
感谢您的帮助和支持。
很高兴听到您找到上传图片的方法。只是为了与您分享另一种方法。例如,如果您需要单独上传文件夹中的所有 images/files(一个或多个),您可以使用此脚本:
@Test
public void Upload() throws InterruptedException
{
File images = new File("*path where all images are saved*");
File[] eimages = images.listFiles();
String imageList = "";
for(int i = 0; i < eimages.length; i++){
imageList += (i != 0 ?"\n":"") + eimages[i].getAbsolutePath();
}
driver.findElement(By.id("fileupload")).sendKeys(fishList);
Thread.sleep(5000);
System.out.println("Images Uploaded");
}
在 java 中使用 selenium 网络驱动程序。我有一个图像上传控件,我需要使用它来上传图像。我通过传递无效的图像路径尝试了 .sendKeys 方法。 我已经尝试过机器人 class,首先单击打开 Window 的按钮(windows 本机 window)但它没有在 "File Name" 中键入键面积
<fieldset class="fieldset-company_logo post-fieldSet">
<label for="company_logo">Opportunity image:</label>
<div class="field">
<div class="upload-button">
<button class="button">Choose File</button>
<span>No file chosen</span>
<input class="input-text" name="company_logo" id="company_logo" placeholder="" type="file">
</div>
<small class="description"> Max. file size: 2MB. Allowed file format: jpg, gif, png </small>
</div>
</fieldset>
我找到了问题的解决方案,请查看以下详细信息:
将数据设置到剪贴板的功能,我将使用它来设置图像路径到剪贴板,稍后我将在模型上使用 window:
public static void setClipboardData(String string) { StringSelection stringSelection = new StringSelection(string); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null); }
现在查看这些代码行
WebElement upload_btn = driver.findElement(By.xpath(choose_file_btn_xpath)); Thread.sleep(4000); setClipboardData(selected_image_path); Actions builder = new Actions(driver); Action myAction = builder.click(upload_btn).release().build(); myAction.perform(); Robot rbt = new Robot(); rbt.delay(4000); rbt.keyPress(KeyEvent.VK_CONTROL); rbt.keyPress(KeyEvent.VK_V); rbt.keyRelease(KeyEvent.VK_V); rbt.keyRelease(KeyEvent.VK_CONTROL); rbt.keyPress(KeyEvent.VK_ENTER); rbt.keyRelease(KeyEvent.VK_ENTER); rbt.delay(4000); driver.findElement(By.xpath(submit_button_xpath)).click();
感谢您的帮助和支持。
很高兴听到您找到上传图片的方法。只是为了与您分享另一种方法。例如,如果您需要单独上传文件夹中的所有 images/files(一个或多个),您可以使用此脚本:
@Test
public void Upload() throws InterruptedException
{
File images = new File("*path where all images are saved*");
File[] eimages = images.listFiles();
String imageList = "";
for(int i = 0; i < eimages.length; i++){
imageList += (i != 0 ?"\n":"") + eimages[i].getAbsolutePath();
}
driver.findElement(By.id("fileupload")).sendKeys(fishList);
Thread.sleep(5000);
System.out.println("Images Uploaded");
}