javascript Selenium -如何发送文件路径到动态生成的输入元素(dom中没有)

bq3bfh9z  于 2022-12-17  发布在  Java
关注(0)|答案(1)|浏览(95)

下面是一个示例
超文本标记语言

<button id="visible-btn">visible button</button>
<p>selected file is: <span id="selected-file"></span></p>

javascript(通常隐藏在内部)

document.getElementById('visible-btn').addEventListener('click', function(e){

    const ele = document.createElement('input');
    ele.type = 'file';
    ele.accept = '*';

    ele.onchange = function (e){
        document.getElementById('selected-file').innerText = e.path[0].files[0].name;
    }

    ele.click();
})

因为输入元素不在dom中,所以我不能用下面的python代码发送文件路径

file_path = '/path/to/file'
driver.find_element(By.XPATH, '//input').send_keys(file_path)

有什么办法解决这个问题吗?非常感谢

编辑1

问题来自Facebook创建者工作室[https://business.facebook.com/creatorstudio/published?content_table=post_type=FB_SHORTS]
“新建”按钮打开文件选择对话框

brtdzjyr

brtdzjyr1#

看起来你试图将上传的文件发送到错误的元素。
上传的文件应该发送到由以下XPath定位的element element://input[@type='file']。此元素不可见,并且不应是动态的。
所以你的代码应该是:

file_path = '/path/to/file'
driver.find_element(By.XPATH, "//input[@type='file']").send_keys(file_path)

相关问题