使用Selenium进行文件上传,但没有<input type="file">元素

4
我正在尝试使用selenium/python上传我的简历到这里,具体操作是在Resume/CV Attach部分。当我检查Attach元素时,它显示为<a data-source="attach" href="#">Attach</a>。由于对HTML不太熟悉,我尝试通过xpath找到该元素,并使用send_keys()方法来上传文件,但程序运行时并没有上传任何内容。没有错误提示。
driver.find_element_by_xpath('/html/body/div[1]/div/div[1]/div[3]/form/div[1]/div[10]/div/div[3]/a[1]').send_keys(info.resume)

我可以找到网页元素并使用click()打开上传文件选项,但我希望能够完全上传文件。

看起来在线上传的示例是在输入type="file"时进行的,我以前用过,效果很好。

1个回答

2

实际上,有一个用于文件上传的输入框。您可以使用以下代码:

driver.find_element_by_id('file').send_keys(info.resume)

请注意,所有 3 个文件上传字段(CV、求职信和非官方成绩单)都具有相同的 id 属性 "file",因此您可以通过索引选择每个字段:

driver.find_elements_by_id('file')[0].send_keys(info.resume)
driver.find_elements_by_id('file')[1].send_keys(info.cover_letter)
driver.find_elements_by_id('file')[2].send_keys(info.transcript)

好的,谢谢!你怎么知道元素id是'file'?我在检查元素时似乎找不到它在HTML中的位置。 - help please
如果有一个文件上传表单,那么肯定应该有<input type="file">元素。您可以执行driver.find_element_by_xpath('//input[@type="file"]').get_attribute('outerHTML')来检查它的外观。 - Andersson
嗯,我明白了,所以你知道元素id = 'file'是因为有上传文件的选项? - help please
不,我只知道肯定有一个输入节点。我可以使用“get_attribute('outerHTML')”从元素的外部HTML中获取属性(包括@id)。 - Andersson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接