我想使用webdriver来挑选文件,但是按照其他答案它们不起作用。他们说只需给按钮一个文件路径,这并没有做任何事情。单击按钮后上传如下所示:
这是其他人所说的,但不起作用:
element = driver.find_element_by_name("file")
element.send_keys("/home/pavel/Desktop/949IH3GNHAo.jpg")
如果我在webdriver实例中提交文件怎么办?谢谢
答案 0 :(得分:2)
尝试使用AutoIT。
它非常易于使用并完成工作。
首先使用webdriver脚本单击“上载”按钮,然后使用以下命令运行AutoIT .exe文件:
import subprocess
subprocess.Popen('[name_of_your_script].exe')
然后使用预期条件给它wait.until
,等待文件完成上传。
下面的示例AutoIT代码将选择一个名为" AAUPLOADFILE.png"的文件:
Local $hWnd=WinWait("[CLASS:#32770]","",10)
ControlFocus($hWnd,"","Edit1")
; Wait for 2 seconds.
Sleep(2000)
ControlSetText($hWnd, "", "Edit1", "AAUPLOADFILE.png")
Sleep(2000)
; Click on the Open button
ControlClick($hWnd, "","Button1");
编写完脚本后,右键单击该文件并选择“编译脚本”,这将创建一个.exe文件。
答案 1 :(得分:2)
我也遇到使用Python和Selenium上传的问题。 这是因为上传网页表单不可见,位于“上传图片”下。 (隐藏的上传表格)
所以我做了解决方法。
# Try to open page with upload form
driver.get('https://bla.com/library/browser')
# Waiting for upload element with name upload-search-block
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "upload-search-block")))
# Relocate hidden upload form using JS
driver.execute_script("document.getElementById('upload-search-block').style.left='200px';")
driver.execute_script("document.getElementById('upload-search-block').style.top='170px';")
# And upload file in the end
upload = driver.find_element_by_id('upload-search-block')
upload.send_keys('/tmp/custom_doc.docx')
祝你好运。
答案 2 :(得分:1)
uploading photos to Craigslist with Python and Selenium
解决了这个问题def add_photo(self, filepath_to_photo):
photo_filepath_input_box = self.driver.find_element_by_xpath("//input[@type='file']")
photo_filepath_input_box.send_keys(filepath_to_photo) # "/home/cchilders/photos/myhouse/upperrightbedroom/photo1.png"
答案 3 :(得分:0)
上传窗口是系统窗口,而不是在webview中。 Selenium webdrivers只能控制webview中的内容。您需要将选择文件的任务交给另一个库,如AutoIT。