• selenium+python自动化78-autoit参数化与批量上传【转载】


    转至博客:上海-悠悠

    前言
    前一篇autoit实现文件上传打包成.exe可执行文件后,每次只能传固定的那个图片,我们实际测试时候希望传不同的图片。
    这样每次调用的时候,在命令行里面加一个文件路径的参数就行。

    一、命令行参数

    1.参数化传入的参数,可以通过autoit的命令行参数:

    ```
        myProg.exe param1 “This is a string parameter” 99
    ```

    在脚本中,可用以下变量获取命令行参数:

    ```
    $CmdLine[0] ; = 3
    $CmdLine[1] ; = param1
    $CmdLine[2] ; = "This is a string parameter"
    $CmdLine[3] ; = 99
    $CmdLineRaw ; = 'param1 "This is a string parameter" 99'
    ```
    - $CmdLine[0] 获取的是命令行参数的总数,在上例中$CmdLine[0]=3
    - $CmdLine[1]~$CmdLine[63] 获取的是命令行参数第1到第63位,这个方式最多只能获取63个参数,不过正常情况下是足够用的
    - $CmdLineRaw 获取的是未拆分的所有参数,是一个长字符串,这种情况下不局限与63个参数


    2.将如下代码保存为.exe文件后(文件名随便取一个:cmdjpg.exe),在cmd执行一次,看是否成功
    ```
    WinActivate("文件上传");
    ControlSetText("文件上传", "", "Edit1", $CmdLine[1] );
    Sleep(2000);
    ControlClick("文件上传", "", "Button1");
    ```
    3.用python代码执行

    ```python

    # 需上传图片的路径
    file_path = "D:\1.png"

    # 执行autoit上传文件
    os.system("C:UsersGloriaDesktopcmdjpg.exe %s" % file_path)  # 你自己本地的

    ```

    二、批量上传图片

    1.方法一:先把要上传的图片放到一个list下,然后for循环

    ```python

    # 把需要上传的图片放到一个list下
    all_png = ["D:\1.png", "D:\2.png", "D:\3.png", "D:\4.png"]

    # 循环点击上传图片
    for i in all_png:
        # 1点开编辑器图片
     
        # 2点开文件上传按钮

        # 执行autoit上传文件
        os.system("C:UsersGloriaDesktopcmdjpg.exe %s" % i)  # 你自己本地的.exe路径
        time.sleep(3)

    ```

    2.方法二:把要上传的图片编号,如:0.png , 1.png, 2.png这种(从0开始编号),放到同一目录下,然后for循环

    ```python

    # 循环点击上传图片
    for i in range(4):
        # 1点开编辑器图片

        # 2点开文件上传按钮

        # 文件名
        file_name = "D:\%s.png" % i  # 参数化路径名称

        # 执行autoit上传文件
        os.system("C:UsersGloriaDesktopcmdjpg.exe %s" % file_name)  # 你自己本地的.exe路径
        time.sleep(3)

    ```

     三、参考代码

    ```python
    # coding:utf-8
    from selenium import webdriver
    import time
    import os
    # 加载配置文件实现免登录
    profileDir = r'C:UsersGloriaAppDataRoamingMozillaFirefoxProfiles1x41j9of.default'  # 你自己电脑的配置文件路径,不要抄我的
    profile = webdriver.FirefoxProfile(profileDir)
    driver = webdriver.Firefox(profile)
    driver.implicitly_wait(30)
    driver.get("http://www.cnblogs.com/yoyoketang/")
    driver.find_element_by_link_text("新随笔").click()
    time.sleep(3)

    # 方法一:把需要上传的图片放到一个list下
    all_png = ["D:\1.png", "D:\2.png", "D:\3.png", "D:\4.png"]

    for i in all_png:
        # 点开编辑器图片
        driver.find_elements_by_css_selector("img.mceIcon")[0].click()
        time.sleep(3)
        # 定位所有iframe,取第二个
        iframe = driver.find_elements_by_tag_name('iframe')[1]
        # 切换到iframe上
        driver.switch_to_frame(iframe)
        # 点开文件上传按钮
        driver.find_element_by_name('file').click()
        time.sleep(3)
        # 执行autoit上传文件
        print i
        os.system("C:UsersGloriaDesktopcmdjpg.exe %s" % i)  # 你自己本地的.exe路径
        time.sleep(3)
        driver.switch_to_default_content()  # 切回到主页面


    # # 方法二:循环点击上传图片
    # for i in range(4):
    #     # 1点开编辑器图片

    #     # 2点开文件上传按钮

    #     # 文件名
    #     file_name = "D:\%s.png" % i  # 参数化路径名称

    #     # 执行autoit上传文件
    #     os.system("C:UsersGloriaDesktopcmdjpg.exe %s" % file_name)  # 你自己本地的.exe路径
    #     time.sleep(3)

    ```

  • 相关阅读:
    HDU 5033 Building --离线+单调栈
    HDU 5025 Saving Tang Monk --BFS
    Codeforces Round #267 Div.2 D Fedor and Essay -- 强连通 DFS
    Codeforces Round #267 Div2 C George and Job --DP
    POJ 3150 Cellular Automaton --矩阵快速幂及优化
    TopCoder SRM 633 Div.2 500 Jumping
    HDU 4998 Rotate --几何
    一些语言方面的技巧
    HDU 5017 Ellipsoid 模拟退火第一题
    HDU 5015 233 Matrix --矩阵快速幂
  • 原文地址:https://www.cnblogs.com/caoj/p/7815835.html
Copyright © 2020-2023  润新知