0

这是我的第一篇文章,很抱歉再次提出同样的问题。我遇到了一个关于在 Selenium Web Driver 中上传文件的问题。我在这个论坛上搜索了很多,但解决方案对我不起作用。文件浏览按钮元素嵌入文件文本区域(即通过文件浏览对话框浏览后打印文件路径的位置),但上传按钮是独立的。

整个元素代码为:

<input class="iceInpFileTxt" type="file" size="35" name="upload">

我无法使用 click() 方法单击“浏览”按钮。我也尝试过使用 Autoit/Robot。

JSP页面中元素的代码: <ice:inputFile id="fileUpload" width="600" autoUpload="true" value="#{practitionerLoadDataBean.inputFile}" actionListener="#{practitionerLoadControllerBean.browse}"/>

我知道输入类型是文件,所以 sendkeys() 应该可以工作。我一直在尝试的代码是:

WebElement elem = driver.findElement(By.xpath("//input[@name='upload']")); elem.sendKeys("<PATH>");

错误信息显示为: org.openqa.selenium.remote.ErrorHandler$UnknownServerException:Unable to locate element: {"method":"xpath","selector":"//input[@name='upload']"}

请让我知道我的错误在哪里。提前致谢。

4

4 回答 4

1

如果元素是不可见的,它就会被发现,但你将无法与之交互。通常的解决方案是四处寻找框架。

您无法搜索帧中包含的元素,您必须先将驱动程序的上下文切换到该帧。

driver.switchTo().frame("frameName");

然后您将能够以通常的方式找到元素并上传文件(请使用sendKeys()此处其他答案描述的方法)。

于 2013-07-19T07:37:42.517 回答
0

请确认输入元素可见

不要点击浏览按钮,它会打开一个系统级对话框来上传文件,在 selenium 中处理这个非常乏味。

您可以使用以下方法:

driver.find_element(:id,'videoupload').send_keys("E:\\video.flv")

请检查代码中的“\\”。

请记住,仅当您发送文件的元素应在表单中时,上传才有效

希望这对你有用。

干杯!!

于 2013-07-16T06:07:09.703 回答
0

使用 SendKeys 上传文件

FirefoxDriver driver = new FirefoxDriver();

driver.get("URl");

File file=null;

try
{
file=new File("file path");
}

catch(Exception e)
{
e.printStackTrace();
}

Assert.assertTrue(file.exists());

WebElement browserButton=driver.findElement(By.id("button Id"));

browserButton.sendkeys(file.getAbsolutePath());
于 2013-07-17T05:10:20.243 回答
0

试试这个代码:

driver.FindElement(By.XPath("/html/body/div[2]/div[5]/div/div/div/div[2]/div[2]/div[1]/div/div[1]")).click();
于 2018-07-05T17:18:29.163 回答