使用Selenium WebDriver Python上传带隐藏输入的文件

时间:2016-07-27 17:04:44

标签: jquery python html css selenium

HTML:

<div id="js-cert-file" class="form-group">
<button id="js-ob-browse-n-upload" class="btn btn-ob browse-and-upload-onboarding-ssl-button" style=""> BROWSE & UPLOAD </button>
<input id="js-cert-file" class="hidden btn btn-ob" type="file" accept=".p12, .pem, .pfx" name="file">
<input id="file-name" type="text" disabled="" value="File Name" style="display:none">
</div>

我尝试使用xpath和css选择器上传文档,但由于隐藏了输入,因此无法执行此操作。我花了几天时间对这个问题感到头疼,但仍然无法弄明白,所以认为是时候问专家了,请帮忙!

问题是,我想上传文件而不点击“浏览和上传”按钮,但就像我说的那样,由于输入被隐藏,我无法这样做。

这是我的python代码:

BrowseAndUpload = driver.find_element_by_xpath("/html/body/div[3]/div/div[2]/div/div/div[1]/div[1]/input[1]")
clickBrowseAndUpload.send_keys('file full path')

2 个答案:

答案 0 :(得分:0)

尝试使输入字段可见并使用以下代码上传文件:

driver.execute_script('document.getElementById("js-cert-file").style.visibility="visible";')
driver.execute_script('document.getElementById("js-cert-file").style.display="block";')
driver.find_element_by_xpath('//input[@id="js-cert-file"]').send_keys('file full path')

答案 1 :(得分:0)

您应更改输入字段的可见性,并将type属性更改为file

JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("document.getElementById('your_input_field_id').style.visibility='visible'");
executor.executeScript("document.getElementById('your_input_field_id').setAttribute('type', 'file')");

WebElement input = driver.findElement(By.id("your_input_field_id"));

input.sendKeys("you\\pat\\to\\Uploadfile.fileExtension");