selenium webdriver上传文件

时间:2013-09-16 08:06:47

标签: python selenium selenium-webdriver selenium-ide

我是selenium的新手,我有一个脚本可以将文件上传到服务器。

在ide版本中说它上传文件,但当我将测试用例导出为python 2 / unittest / webdriver时,它不会上传它..

它不会给我任何错误,只是不上传它......

python脚本是:

driver.find_element_by_id("start-upload-button-single").click()
driver.find_element_by_css_selector("input[type=\"file\"]").clear()
driver.find_element_by_css_selector("input[type=\"file\"]").send_keys("C:\\\\Documents and Settings\\\\pcname\\\\Desktop\\\\ffdlt\\\\test.jpeg")

我搜索了解决方案,但除了将其与AutoIt或AutoHotKey集成之外,我还没有找到任何解决方案......

第一行打开Firefox的文件上传框。

5 个答案:

答案 0 :(得分:8)

您的代码非常适合我(我使用Firefox,Chrome驱动程序进行测试)

我怀疑的一件事是反斜杠(\)过度逃避。

请尝试以下操作:

driver.find_element_by_id("start-upload-button-single").click()
driver.find_element_by_css_selector('input[type="file"]').clear()
driver.find_element_by_css_selector('input[type="file"]').send_keys("C:\\Documents and Settings\\pcname\\Desktop\\ffdlt\\test.jpeg")

driver.find_element_by_id("start-upload-button-single").click()
driver.find_element_by_css_selector('input[type="file"]').clear()
driver.find_element_by_css_selector('input[type="file"]').send_keys(r"C:\Documents and Settings\pcname\Desktop\ffdlt\test.jpeg")

答案 1 :(得分:2)

您是否尝试过这段代码:

driver.find_element_by_css_selector("input[type=\"file\"]").send_keys("C:\\Documents and Settings\\pcname\\Desktop\\ffdlt\\test.jpeg")

答案 2 :(得分:1)

如果我从IDE运行以下行,它可以正常工作,它会上传文件。

Command | Target                               | Value
_____________________________________________________________
open    | /upload                              |
click   | id=start-upload-button-single        |
type    | css=input[type="file"]               | C:\\Documents and Settings\\cristian\\Desktop\\ffdl\\MyWork.avi

但是当我为Python webdriver导出它时,它只是没有上传它,我已经尝试了一切。

最后的办法是让它与AutoHotKey一起使用,但我希望它可以工作。

我所做的是测试了我在其他网站上找到的解决方案,看看问题是否只出现在我尝试上传的网站上(youtube),解决方案有效(EX:{{ 3}})它们是有效的,你可以将文件上传到大多数服务器,它只是不起作用。

感谢您的帮助。

答案 3 :(得分:1)

这对我有用:

# Upload file
elem = driver.find_element_by_name("File")
elem.send_keys(r"D:\test\testfile04.txt")
elem = driver.find_element_by_partial_link_text("Upload File")
elem.click()

答案 4 :(得分:0)

使用Pyautowin

from pywinauto import Desktop
driver.find_element_by_id("start-upload-button-single").click()
app = Desktop()['Open']   # About `Open`, checkout upload Dialog title
app.wait('visible')
app.Edit.type_keys(R"C:\Documents and Settings\pcname\Desktop\ffdlt\test.jpeg", with_spaces=True)
app['Open'].click()  # About `Open`, checkout upload Button name