在调试时我发现我的测试由于卸载文件而失败。
我尝试了很多不同的定位器并检查了上传文件的绝对路径,但它只是不想上传文件!
如果您能检查此表格,那就太好了: http://tutorialsninja.com/demo/index.php?route=product/product&path=25_28&product_id=42
与问题相关的代码部分:
String path = "C:\\Users\\username\\IdeaProjects\\selenium_bootcamp\\src\\resources\\image.jpg";
@FindBy(how = How.XPATH, using = "//button[@id='button-upload222']")
public WebElement fileInputApplePage;
public void uploadFileOnApplePage() {
fileInputApplePage.sendKeys(path);
}
您需要上传文件的输入字段类型是隐藏的,您应该将其更改为文件,以继续上传过程
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("document.getElementById('input-option222').setAttribute('type', 'file')");
WebElement input = driver.findElement(By.id("input-option222"));
input.sendKeys("C:\\Users\\rober\\IdeaProjects\\selenium_bootcamp\\src\\resources\\image.jpg");
更新: 使用Robot框架上传
driver.findElement(By.id("button-upload222")).click();
StringSelection ss = new StringSelection("C:\\Users\\rober\\IdeaProjects\\selenium_bootcamp\\src\\resources\\image.jpg");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);