无法使用python和selenium将文件通过sendkeys上传到iframe中的button元素

2024-03-02 19:39:27 发布

您现在位置:Python中文网/ 问答频道 /正文

【环境】:Python+Selenium

我正在尝试上载本地文件到上载文件按钮。在

首先,我试着看看我是否能找到那个元素并点击那个按钮,我成功地使用了

driver.switch_to_frame("upload_frame")
driver.find_elements(By.ID, 'id_file').click()

因此,我使用了相同的方法,但是在文件上载时,将click()替换为send_keys()。在

^{pr2}$

但是它不能传递值。在

所以,我尝试使用其他定位器如下:(它们都不能工作)

driver.find_element(By.XPATH, "//button[text()='Update from File']")
driver.find_elements(By.XPATH, "//*[@id='id_file']")
driver.find_elements(By.XPATH, "//input[@id='file']")

此外,我也在谷歌上搜索了很多类似的问题,但没有找到答案。在

想听听你的意见,给我点启示吗? 谢谢您。在

HTML代码段:

<iframe id="upload_frame" height="30px" frameborder="0" width="0" src="/web/setting/upload.html?r=1422498136526" scrolling="no"
name="upload_frame" style="width: 170px;">
    <!DOCTYPE html>
    <html>

    <head>

        <body onload="page_load();">
            <div id="content" class="b1">
                <form id="form_firm" action="/cgi-bin/system_mgr.cgi" enctype="multipart/form-data" method="post" name="form_firm">
                    <input type="hidden" value="cgi_firmware_upload" name="cmd">
                    <div class="file_input_div">
                        <button id="id_file" type="button" style="border: 2px solid rgb(70, 70, 70); background: none repeat scroll 0% 0% rgb(33, 33, 33);">
                            <span class="_text" lang="_firmware" datafld="update_b">Update from File</span>
                        </button>
                        <input id="file" class="file_input_hidden" type="file" onchange="start_upload();" onclick="clear_upload_path();" style="cursor:pointer"
                        name="file">
                    </div>
                </form>
            </div>
        </body>

    </html>
</iframe>

Tags: 文件namedivformidinputbyhtml
1条回答
网友
1楼 · 发布于 2024-03-02 19:39:27

{{{cd2}类型与cd3}不对应。在

对于使用selenium的简单文件上载,必须首先搜索类型为file的输入标记。在您的代码中,必须

<input id="file" class="file_input_hidden" type="file" onchange="start_upload();" onclick="clear_upload_path();" style="cursor:pointer" name="file">

请使用以下代码进行文件上载工作:

driver.switch_to_frame("upload_frame")
driver.find_element(By.ID, 'file').send_keys('//path of the file to upload')

注:-上述内容对应于“input tag with type file”。在

相关问题 更多 >