【问题标题】:Upload file with hidden input with Selenium WebDriver Python使用 Selenium WebDriver Python 上传带有隐藏输入的文件
【发布时间】:2016-12-01 19:58:02
【问题描述】:

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')

【问题讨论】:

    标签: jquery python html css selenium


    【解决方案1】:

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

    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')
    

    【讨论】:

    • 我也试过了,但没有运气。我没有收到任何错误消息,但文件不会上传。它说不支持该文件,但上传文件是 .p12 扩展名。我不知道为什么我是新手
    【解决方案2】:

    您应该更改输入字段的可见性,并且您应该将类​​型属性更改为文件

    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");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-02
      • 2017-12-23
      • 2015-08-14
      • 2013-07-22
      • 2020-01-22
      • 2023-03-06
      相关资源
      最近更新 更多