Python页面自动化测试之文件上传的两种方式

 

——广州_vivi

最近教学过程,学员项目出现测试上传文件无法执行的情况,分析发现学员项目的上传按钮并不是input按钮,导致无法使用直接定位元素方式进行文件的上传。

用百度首页-图片上传搜索进行举例,虽然该按钮也是input按钮,但是该文章也有一定的参考意义。

方法一:适用于input标签

使用selenium定位到元素后,直接sendkeys,输入要上传文件的绝对地址

  1. from selenium import webdriver   #从selenium库中导入webdriver包  
  2. from time import sleep  
  3.   
  4. driver = webdriver.Chrome()  
  5. url = 'https://www.baidu.com/'  
  6. driver.get(url)  
  7. driver.maximize_window()  
  8. driver.find_element_by_xpath('//*[@id="form"]/span[1]/span[1]').click()  
  9. sleep(3)  
  10. element = driver.find_element_by_class_name('upload-pic')   #定位到上传文件框  
  11. element.send_keys(r'C:\Users\kindo\Desktop\Image1.png')   #上传文件  

方法二适用于非input标签

使用selenium定位到元素后,点击元素,弹出一个Windows弹窗后,通过pywinauto库对Windows的窗口进行操作

  1. from selenium import webdriver   #从selenium库中导入webdriver包  
  2. from time import sleep  
  3.   
  4.   
  5. driver = webdriver.Chrome()  
  6. url = 'https://www.baidu.com/'  
  7. driver.get(url)  
  8. driver.maximize_window()  
  9. element = driver.find_element_by_xpath('//*[@id="form"]/span[1]/span[1]').click()  
  10. element = driver.find_element_by_class_name('upload-pic').click()  
  11. sleep(3)  
  12.   
  13. ''''' 
  14. Python实现来做PC端自动化需要用到一个第三方库:pywinauto 
  15. 安装命令pip install pywinauto 
  16. '''  
  17. import pywinauto  
  18. #pywinauto拟操作键盘,需要使用到 pywinauto.keyboard.send_keys这个方法 
  19. #需要注意的是Pywinauto库的send_keys方法与selenium库的send_keys方法不同输入的键盘操作关键字存在较大差异 
  20. from pywinauto.keyboard import send_keys  
  21.   
  22. # 使用pywinautoc创建一个操作桌面窗口的对象  
  23. win1 = pywinauto.Desktop()  
  24.   
  25. # 选择文件上传的窗口 窗口句柄默认为‘打开’ 
  26. bow1 = win1['打开']  
  27.   
  28. # 选择文件地址输入框,点击激活  
  29. bow1["Toolbar3"].click()  
  30.   
  31. # 键盘输入上传文件的路径  
  32. send_keys(r"C:\Users\kindo\Desktop")  
  33.   
  34. # 键盘输入回车,打开该路径  
  35. send_keys("{VK_RETURN}")  
  36.   
  37. # 选中文件名输入框,输入文件名  
  38. bow1["文件名(&N):Edit"].type_keys("Image1.png")  
  39.   
  40. # 点击打开  

bow1["打开(&O)"].click() 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐