我试图从我的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'
答案 0 :(得分:0)
我不建议使用Robot或Actions类,因为它们在涉及Parallel Test Execution using i.e. Selenium Grid或其他多线程方法时可能会引起很多问题。
您的问题是您使用了错误的元素。似乎您正在尝试将密钥发送到<div>
标签,而应该使用<input type="file">
因此将代码更改为:
@FindBy(id= "fileUpload")
,一切都应按预期开始。
以防万一,您更喜欢XPath:
@FindBy(xpath = "//input[contains(@title, 'Browse')]")