在selenium webdriver中上传多个文件

时间:2013-06-20 09:39:53

标签: selenium selenium-webdriver

我想上传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 个答案:

答案 0 :(得分:9)

适用于Chrome:

 csvcut source.csv -c  $(cat cols.txt | tr '\n' ',' | sed 's/,$//')

答案 1 :(得分: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或其他任何内容。

答案 2 :(得分:0)

很容易 喜欢 //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)

答案 3 :(得分:-1)

神圣#####它甚至适用于PHP:

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

谢谢:)