【问题标题】:Multiple files upload in selenium webdiver在 selenium webdriver 中上传多个文件
【发布时间】:2013-06-17 02:44:25
【问题描述】:

我想上传 5 个文件,但我的“文件输入”是相同的名称/ID,我怎样才能上传 5 个文件。 我的 HTML 代码是:

<div>
    <table id="listtable">
    </table>
    <br/>
    <input type="hidden" name="delFiles" id="deletefiles"/> 
    <table id="filetable">
    <tbody>
        <tr>
            <td>
                <input type="file" size="27px" id="page" name="page"/>
            </td>
            <td>
                <a href="#">
                    <img name="del" onclick="removeRow(this);" title="delete" alt="delete" src="images/user_delete.png"/>
                </a>
            </td>
        </tr>
        <tr>
            <td>
                <input type="file" size="27px" name="page"/>
            </td>
            <td>
                <img name="del" onclick="removeRow(this);" title="delete" alt="delete" src="images/user_delete.png"/>
            </td>
        </tr>
        <tr>
            <td>
                <input type="file" size="27px" name="page"/>
            </td>
            <td>
                <img name="del" onclick="removeRow(this);" title="delete" alt="delete" src="images/user_delete.png"/>
            </td>
        </tr>
        <tr>
            <td>
                <input type="file" size="27px" name="page"/>
            </td>
            <td>
                <img name="del" onclick="removeRow(this);" title="delete" alt="delete" src="images/user_delete.png"/>
            </td>
        </tr>
        <tr>
            <td>
                <input type="file" size="27px" name="page"/>
            </td>
            <td>
                <img name="del" onclick="removeRow(this);" title="delete" alt="delete" src="images/user_delete.png"/>
            </td>
        </tr>
        </tbody>
    </table>
    <br/>
    <br/>
</div>

【问题讨论】:

  • 您确实需要查看您提出的所有问题并接受答案。如果没有满意的答案,请向回复者提供反馈。 meta.stackexchange.com/a/5235
  • @Namitha,您的 HTML 不会显示,除非您缩进一个制表符或四个空格。不要回滚我所做的编辑,或者干脆自己做。

标签: selenium selenium-webdriver


【解决方案1】:

这适用于 Chrome:

driver.findElement(By.id("input1")).sendKeys("path/to/first/file-001 \n path/to/first/file-002 \n path/to/first/file-003");

【讨论】:

  • 也适用于我 :) 对于遇到错误的其他所有人,只需确保将所有内容作为单个字符串发送,并且不要多次调用 sendKeys
  • 不适合我,你的 chrome 版本是什么?
【解决方案2】:

您会像只上传一个文件一样这样做。

driver.findElement(By.id("input1")).sendKeys("path/to/first/file");
driver.findElement(By.id("input2")).sendKeys("path/to/second/file");
driver.findElement(By.id("input3")).sendKeys("path/to/third/file");
driver.findElement(By.id("input4")).sendKeys("path/to/fourth/file");
driver.findElement(By.id("input5")).sendKeys("path/to/fifth/file");
driver.findElement(By.id("upload")).click();

显然,您需要输入自己的正确 ID 或其他任何内容。

【讨论】:

  • 但是这里所有的文本框 name=page.So 我怎么能这样给?
  • 在这种情况下,我想您需要先列出input 元素。 inputs = driver.findElements(By.xpath("//input[@type='file']"); inputs[1].sendKeys("path/to/first/file"); inputs[2].sendKeys("path/to/second/file"); inputs[3].sendKeys("path/to/third/file"); inputs[4].sendKeys("path/to/fourth/file"); inputs[5].sendKeys("path/to/fifth/file"); 但是,如果您可以迭代列表,同时添加一个包含来自使用相同索引位置的数组的路径的字符串,那就更好了。
【解决方案3】:

就这么简单 喜欢 //input[@type="file"] 将指向第一个输入标签 和 (//input[@type="file"])[{INDEX}] 其中 INDEX 是输入标签的编号 注意:xpath 中的索引从 1 开始

或者你可以使用

file_tag_list =driver.find_elements_by_xpath(//input[@type="file"])

函数,你可以在不同的语言中找到它的 python 语法,只需 google 即可。 此函数将返回 webdriver 元素的列表 然后就可以了

file_tag_list[0].send_keys(filepath)
file_tag_list[1].send_keys(filepath)

【讨论】:

    【解决方案4】:

    Holy ##### 它甚至可以在 PHP 中使用:

    public function waitForAjax()
    {
        while(true)
        {
            $ajaxIsComplete = array(
                'script' => 'return jQuery.active == 0',
                'args' => array()
            );
            $ajaxIsComplete = $this->execute($ajaxIsComplete);
            if ($ajaxIsComplete) {
                break;
            }
        }
    }
    

    谢谢你:)

    【讨论】:

      猜你喜欢
      • 2014-07-20
      • 1970-01-01
      • 2013-09-20
      • 2019-09-20
      • 1970-01-01
      • 1970-01-01
      • 2018-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多