Selenium无法使用input_type = file找到元素

时间:2017-03-19 17:39:29

标签: javascript java selenium selenium-webdriver

我想使用selenium webdriver上传文件,问题是上传文件的按钮有input_type=file。 我使用了xpathnameIDsendkeys,但它无效。

以下是代码:

driver.findElement(By.xpath(".//*[@id='repondants_file']")).sendkeys("filepath");

我也使用过JS:

WebElement element = driver.findElement(By.xpath(".//*[@id='repondants_file']"));
JavascriptExecutor executor = (JavascriptExecutor)getDriver();
executor.executeScript("arguments[0].click()",element );

这是完整的堆栈跟踪:

*** Element info: {Using=xpath, value=.//*[@id='repondants_file']}
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:133)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:99)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:43)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:163)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:604)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:371)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:476)
at org.openqa.selenium.By$ByXPath.findElement(By.java:361)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:363)
at TestPackage.OperationProjet2.main(OperationProjet2.java:41)

这是Html源代码:

a href="http://test.360-feedback-enligne.fr/professionnel-rh/app/batch/encode.php" download="liste_repondants.xlsx">
<br/>
<br/>
<label>Importez le fichier EXCEL des répondants (conforme à la trame) :</label>
<input id="repondants_file" name="repondants_file" type="file"/>

任何线索?

3 个答案:

答案 0 :(得分:1)

Selenium可以帮助您点击打开Windows文件选择器的特定webelement。 Selenium无法帮助您直接从本地目录结构中选择文件。在这种情况下,您必须在Selenium / Java代码中获取Auto IT的帮助以选择特定文件,然后通过Webdriver实例,您可以单击上传按钮上传所选文件。

如果这有助于您,请告诉我。

答案 1 :(得分:0)

您可以使用Selenium Webdriver借助控件的 type 属性上传所需文件,如下所示:

 driver.findElement(By.xpath("//input[@type='file']")).sendkeys("filepath");

将上述代码中的 filepath 替换为实际文件路径。让我知道,它是否适合你。

答案 2 :(得分:0)

没关系,我找到了解决方案,我使用了ExpectedConditions,如下所示ExpectedConditions.visibilityOfElementLocated(By.id(&#34; reponda nts_file&#34;)));