无法上传使用sendkeys尝试的文件?

时间:2019-08-25 09:44:42

标签: java selenium

我试图从我的maven项目中上传文件,但无法以任何方式上传:如何从我的项目中上传文件?

      <input data-ng-controller="uploadControl" type="file" title="Browse 
      and select a file to upload." name="fileUpload" id="fileUpload" ng- 
      disabled="isURLActivity" class="ng-scope" data-role="upload" 
        autocomplete="off">
        <span>Browse...</span>

元素的定位符:

      @FindBy(xpath = "//div[(text() = 'Browse...' or . = 'Browse...')]")
      public WebElement browse;

我尝试过的第一种方法:

     WebElement browse= driver.findElement(By.xpath("//div[(text() = ' 
     'Browse...' or . = 'Browse...')]"));
     browse.sendKeys("Path of file");

我尝试过的第二种方法:

    Actions actions= new Actions(driver);
    actions.moveToElement(browse).build().perform();
    actions.sendKeys(browse,"Path of file").build().perform();

实际结果:

  

org.openqa.selenium.ElementNotInteractableException:元素不   可交互的(会话信息:chrome = 76.0.3809.100)构建信息:   版本:“ 3.141.5”,修订:“ d54ebd709a”,时间:“ 2018-
  11-06T11:42:16'

1 个答案:

答案 0 :(得分:0)

我不建议使用RobotActions类,因为它们在涉及Parallel Test Execution using i.e. Selenium Grid或其他多线程方法时可能会引起很多问题。

您的问题是您使用了错误的元素。似乎您正在尝试将密钥发送到<div>标签,而应该使用<input type="file">

因此将代码更改为:

@FindBy(id= "fileUpload")

,一切都应按预期开始。

以防万一,您更喜欢XPath:

@FindBy(xpath = "//input[contains(@title, 'Browse')]")