重现的步骤: -
转到: -
用户名: - softwaretesting805@gmail.com 密码: - 1Selenium @
搜索并应用任何作业并转到“附件”页面,然后单击“添加”按钮。 我无法通过Selenium上传任何文件。
1)我使用sendkeys来回答docType和docName问题。
2)浏览元素是一个表单,所以我首先使用sendkeys发送文件路径,然后在表单元素上调用submit函数。
3)之后我点击了上传按钮。
问题似乎在处理浏览按钮,在chromedriver中,如果我上去浏览选项卡,手动浏览文件然后通过代码运行休息部分然后文件上传成功。
我使用下面的代码进行浏览和上传。
List<WebElement> attachButtons = driver.getDriver().findElements(By.xpath("//input[@type=\"file\"]"));
for (int i = 0; i < 5; i++)
{
if (attachButtons != null && attachButtons.size() > 0 && attachButtons.get(0).isDisplayed())
{
attachButtons.get(0).sendKeys("/home/user/path/to/file");
SeleniumUtils.pause(1 * 1000);
List<WebElement> formElements = driver.getDriver().findElements(By.tagName("form"));
if(formElements != null && formElements.size() > 0)
{
formElements.get(0).submit();
}
break;
}
SeleniumUtils.pause(3 * 1000);
}
List<WebElement> uploadButtons = driver.getDriver().findElements(By.xpath("//a[@ct=\"B\"]"));
if (uploadButtons != null && uploadButtons.size() > 0)
{
WebElement uploadButton = null;
for(WebElement button : uploadButtons)
{
if(button.isDisplayed() && button.getText().contains("Upload"))
{
uploadButton = button;
break;
}
}
if(uploadButton != null)
{
uploadButtons.get(0).click();
}
}
任何帮助都会得到极大的赞赏。
谢谢!
答案 0 :(得分:0)
我遇到了类似的问题。它是通过使用getAbsolutePath解决的。请尝试以下代码,看看它是否有帮助。
File file = new File("/home/user/path/to/file");
attachButtons.get(0).sendKeys(file.getAbsolutePath());
另一种方法是使用java脚本。您可以使用JavaScriptExecutor,如下所示:
String jsScript = "var input = document.getElementsByTagName('input')[0];"
+"input.value='/home/user/path/to/file';";
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript(jsScript);