有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法使用Selenium上载文件

我正在尝试上载pdf文件,但它引发了一个异常:

Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: cannot focus element

代码如下:

public class FileUploadPopUp {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "G://ChromeDriver//chromedriver.exe");

        WebDriver driver=new ChromeDriver();
        driver.manage().window().maximize();

        driver.get("https://pdf2doc.com/");

        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

        driver.findElement(By.id("pick-files")).sendKeys("F:\\Selenium Complete Notes.pdf"); 
    }

}

这是为了自动执行文件上载操作。我想上传一个pdf文件。有谁能帮我解决这个问题吗


共 (2) 个答案

  1. # 1 楼答案

    如果文件输入不可编辑-您可以尝试使用JS更改value属性:

    ((JavascriptExecutor) driver).executeScript("arguments[0].setAttribute('value', 'F:\\Selenium Complete Notes.pdf');", element);
    
  2. # 2 楼答案

    要上传文件,您必须对文件类型使用input元素,但是pick-files选择器是div,这就是为什么会出现错误。使用input[type=file]css选择器:

    public class FileUploadPopUp {
        public static void main(String[] args) {
            System.setProperty("webdriver.chrome.driver", "G://ChromeDriver//chromedriver.exe");
    
            WebDriver driver=new ChromeDriver();
            driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
            driver.manage().window().maximize();
    
            driver.get("https://pdf2doc.com/");
    
            driver.findElement(By.cssSelector("input[type=file]")).sendKeys("F:\\Selenium Complete Notes.pdf"); 
        }
    }