1

我想上传 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>
4

4 回答 4

13

这适用于 Chrome:

driver.findElement(By.id("input1")).sendKeys("path/to/first/file-001 \n path/to/first/file-002 \n path/to/first/file-003");
于 2017-11-21T20:49:09.840 回答
1

如果您只上传一个文件,您会这样做。

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 或其他任何内容。

于 2013-06-20T09:55:09.570 回答
0

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

或者你可以使用

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

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

file_tag_list[0].send_keys(filepath)
file_tag_list[1].send_keys(filepath)
于 2015-05-22T12:53:05.000 回答
-1

神圣的##### 它甚至可以在 PHP 中使用:

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

谢谢 :)

于 2015-05-06T06:42:51.380 回答