我想使用selenium webdriver
上传文件,问题是上传文件的按钮有input_type=file
。
我使用了xpath
,name
,ID
和sendkeys
,但它无效。
以下是代码:
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"/>
任何线索?
答案 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;)));