zoukankan      html  css  js  c++  java
  • Selenium之文件上传

    文件上传自动化:从研发角度来看,目前实现文件上传的几种方式:

                           ① 利用<input type="file"/>标签实现的,鼻尖是传统的上传方式。

                           ② 利用js+flash或Ajax等插件进行上传。

    selenium也有两种方式去实现自动化测试:

         【<input标签>】一种

              ①send_keys() 自动化上传

               实现方法:只要有input标签,一般都可以通过对这个按钮进行定位再传路径。如driver.find_element_by_name('upload').send_keys('D:\filename.txt')

         代码实现如下:

               import  time

               from  selenium  import  webdriver

               driver = webdriver.Chrome() 

               driver.implicitly_wait(10)

               driver.get('http://www.sahitest.com/demo/php/fileUpload.htm')

               # 定位 “选择文件”按钮

               upload = driver.find_element_by_id('file')

               upload.send_keys('C:\test1.txt')

               # print(pload.get_attribute('value'))

               time.sleep(3)

               driver.find_element_by_xpath('//input[3]').click()

               # driver.quit()

         【非input型上传】三种

               ① selenium + autolt实现文件上传

                    通过Autolt插件去结合selenium一起来实现文件的自动上传。

               ② win32gui

                   注意:需要安装  pywin32-2 18.win-amd64-py2.7  exe

                              需要安装pypiwin32

               ③ 最方便的Sendkeys   前提是:需要先安装Sendkeys库    pip  install  Sendkeys

                                                     注意:浏览器用Chrome,可能会回不支持,最好用火狐浏览器

           第二种 -- 代码实现如下:

               import  time

               from selenium import webdriver

               import  win32gui

               import  win32con

               driver = webdriver.Chrome()

               driver.implicitly_wait(10)

               driver.get('http://sahitest.com/demo/php/fileUpload.htm')

               upload = driver.find_element_by_id('file')

               upload.click()

               time.sleep(1)

               # win32gui

               dialog = win32gui.FindWindow('#32770', '文件上传')  # 对话框

               ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None)

               ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None)

               Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None)  # 上面三句依次寻找对象,直到找到输入框Edit对象的句柄

               button = win32gui.FindWindowEx(dialog, 0, 'Button', None)  # 确定按钮Button

               win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, 'C:\test1.txt')   #  往输入输入绝对地址

               win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)  # 按button

               print(upload.get_attribute('value'))

               time.sleep(5)

               driver.quit()

           第三种 -- 代码实现如下:

               from selenium import webdriver

               import win32gui

               import win32con

               import time

               dr = webdriver.Firefox()

               dr.get('http://sahitest.com/demo/php/fileUpload.htm')

               upload = dr.find_element_by_id('file')

               upload.click()

               time.sleep(1)

               # SendKeys

               SendKeys.SendKeys("C:\test1.txt")   #   发送文件地址

               SendKeys.SendKeys("{ENTER}")    # 发送回车键

               print(upload.get_attribute('value'))

               dr.quit()

  • 相关阅读:
    8天学通MongoDB——第五天 主从复制
    5天不再惧怕多线程——第五天 线程池
    8天玩转并行开发——第四天 同步机制(上)
    8天学通MongoDB——第八天 驱动实践
    8天玩转并行开发——第三天 plinq的使用
    8天玩转并行开发——第一天 Parallel的使用
    8天玩转并行开发——第五天 同步机制(下)
    5天不再惧怕多线程——第一天 尝试Thread
    虚函数、纯虚函数详解
    libevent 笔记
  • 原文地址:https://www.cnblogs.com/peipei-Study/p/11971451.html
Copyright © 2011-2022 走看看