Python页面自动化测试之文件上传的两种方式
?
——广州_vivi
最近教学过程,学员项目出现测试上传文件无法执行的情况,分析发现学员项目的上传按钮并不是input按钮,导致无法使用直接定位元素方式进行文件的上传。
用百度首页-图片上传搜索进行举例,虽然该按钮也是input按钮,但是该文章也有一定的参考意义。
方法一:适用于input标签
使用selenium定位到元素后,直接sendkeys,输入要上传文件的绝对地址
- from?selenium?import?webdriver???#从selenium库中导入webdriver包??
- from?time?import?sleep??
- ??
- driver?=?webdriver.Chrome()??
- url?=?'https://www.baidu.com/'??
- driver.get(url)??
- driver.maximize_window()??
- driver.find_element_by_xpath('//*[@id="form"]/span[1]/span[1]').click()??
- sleep(3)??
- element?=?driver.find_element_by_class_name('upload-pic')???#定位到上传文件框??
- element.send_keys(r'C:\Users\kindo\Desktop\Image1.png')???#上传文件??
方法二:适用于非input标签
使用selenium定位到元素后,点击元素,弹出一个Windows弹窗后,通过pywinauto库对Windows的窗口进行操作
- from?selenium?import?webdriver???#从selenium库中导入webdriver包??
- from?time?import?sleep??
- ??
- ??
- driver?=?webdriver.Chrome()??
- url?=?'https://www.baidu.com/'??
- driver.get(url)??
- driver.maximize_window()??
- element?=?driver.find_element_by_xpath('//*[@id="form"]/span[1]/span[1]').click()??
- element?=?driver.find_element_by_class_name('upload-pic').click()??
- sleep(3)??
- ??
- '''''?
- Python实现来做PC端自动化需要用到一个第三方库:pywinauto?
- 安装命令:pip?install?pywinauto?
- '''??
- import?pywinauto??
- #pywinauto模拟操作键盘,需要使用到?pywinauto.keyboard.send_keys这个方法?
- #需要注意的是Pywinauto库的send_keys方法与selenium库的send_keys方法不同,输入的键盘操作关键字存在较大差异?
- from?pywinauto.keyboard?import?send_keys??
- ??
- #?使用pywinautoc创建一个操作桌面窗口的对象??
- win1?=?pywinauto.Desktop()??
- ??
- #?选择文件上传的窗口?窗口句柄默认为‘打开’?
- bow1?=?win1['打开']??
- ??
- #?选择文件地址输入框,点击激活??
- bow1["Toolbar3"].click()??
- ??
- #?键盘输入上传文件的路径??
- send_keys(r"C:\Users\kindo\Desktop")??
- ??
- #?键盘输入回车,打开该路径??
- send_keys("{VK_RETURN}")??
- ??
- #?选中文件名输入框,输入文件名??
- bow1["文件名(&N):Edit"].type_keys("Image1.png")??
- ??
- #?点击打开??
bow1["打开(&O)"].click()?
|