python脚本为已创建的ios .h和.m文件添加费代码

# -*- coding: utf-8 -*-

import random

import os


def getArray():

    first = "abcdefghijklmnopqrstuvwxyz"

    second = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

    third = "1234567890"

    number = "345"

    index = 0

    for i in range(500):

        final=(random.choice(first))

        index = random.randint(3, 5)

        for i in range(index):

            final+=(random.choice(first))

        final += (random.choice(second))

        for i in range(index):

            final+=(random.choice(third))

        array.append(final)

classArray = ['NSString','UILabel','NSDictionary','NSData','UIScrollView','UIView','UITextView','UITableView','UIImageView']#.h文件里属性的类型从这个数组里随机选

viewArray = ['UILabel','UIScrollView','UIView','UITextView','UITableView','UIImageView']#.m文件里创建的元素的类型从这个数组里随机选

array = []

getArray()#用于生成.h和.m文件中将要用的属性名

array = list(set(array))


#.h文件添加废代码

def HFileAddMj(file_path,old_str1,old_str2,old_str3,old_str4,old_str5):

    

    file_data = ""

    Ropen=open(file_path,'r')

    for line in Ropen:

        nameStr = random.choice(array)

        className = random.choice(classArray)

        if old_str1 in line:

            line += '\n\n/*********mjbwenjian**********/\n@property(nonatomic,strong)'+className +' * '+nameStr+';\n/*********mjbwenjian**********/\n\n'

            file_data += line

            array.remove(nameStr)#防止创建的属性名重复(创建一个从数组中删除一个)

        elif old_str2 in line:

            line += '\n\n/*********mjbwenjian**********/\n@property(nonatomic,strong)'+className +' * '+nameStr+';\n/*********mjbwenjian**********/\n\n'

            file_data += line

            array.remove(nameStr)

        elif old_str3 in line:

            line += '\n\n/*********mjbwenjian**********/\n@property(nonatomic,strong)'+className +' * '+nameStr+';\n/*********mjbwenjian**********/\n\n'

            file_data += line

            array.remove(nameStr)

        elif old_str4 in line:

            line += '\n\n/*********mjbwenjian**********/\n@property(nonatomic,strong)'+className +' * '+nameStr+';\n/*********mjbwenjian**********/\n\n'

            file_data += line

            array.remove(nameStr)

        elif old_str5 in line:

            line += '\n\n/*********mjbwenjian**********/\n@property(nonatomic,strong)'+className +' * '+nameStr+';\n/*********mjbwenjian**********/\n\n'

            file_data += line

            array.remove(nameStr)

        else:

            file_data += line

    Ropen.close()

    Wopen=open(file_path,'w')

    Wopen.write(file_data)

    Wopen.close()

    print(file_data)


#.m文件添加废代码

def MFileAddMj(file_path,old_str1,old_str2,old_str3,old_str4,old_str5,old_str6,old_str7):

    

    file_data = ""

    Ropen=open(file_path,'r')#读取文件

    for line in Ropen:

        nameStr = random.choice(array)

        className = random.choice(viewArray)

        if old_str1 in line:#如果.h文件中的某一行里包含old_str,则往这一行添加一下语句

            line += '\n\n/*********mjbwenjian**********/\n'+className +' * '+nameStr+' = '+'[['+className+' alloc]initWithFrame:CGRectMake('+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+')];\n'+' '+nameStr+'.layer.cornerRadius ='+str(random.randint(5,10))+';\n'+nameStr+'.userInteractionEnabled = YES;\n'+nameStr+'.layer.masksToBounds = YES;'+'\n/*********mjbwenjian**********/\n\n'

            file_data += line

            array.remove(nameStr)#防止创建的元素名重复(创建一个从数组中删除一个)

        elif old_str2 in line:

            line += '\n\n/*********mjbwenjian**********/\n'+className +' * '+nameStr+' = '+'[['+className+' alloc]initWithFrame:CGRectMake('+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+')];\n'+nameStr+'.layer.borderWidth = 1;'+nameStr+'.clipsToBounds = YES;\n'+' '+nameStr+'.layer.cornerRadius ='+str(random.randint(5,10))+';\n'+'\n/*********mjbwenjian**********/\n\n'

            file_data += line

            array.remove(nameStr)

        elif old_str3 in line:

            line += '\n\n/*********mjbwenjian**********/\n'+className +' * '+nameStr+' = '+'[['+className+' alloc]initWithFrame:CGRectMake('+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+')];\n'+nameStr+'.backgroundColor = [UIColor whiteColor];'+nameStr+'.layer.borderColor = [[UIColor greenColor] CGColor];'+' '+nameStr+'.layer.cornerRadius ='+str(random.randint(5,10))+';\n'+'\n/*********mjbwenjian**********/\n\n'

            file_data += line

            array.remove(nameStr)

        elif old_str4 in line:

            line += '\n\n/*********mjbwenjian**********/\n'+className +' * '+nameStr+' = '+'[['+className+' alloc]initWithFrame:CGRectMake('+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+')];\n'+nameStr+'.backgroundColor = [UIColor whiteColor];'+nameStr+'.layer.borderColor = [[UIColor greenColor] CGColor];'+' '+nameStr+'.layer.cornerRadius ='+str(random.randint(5,10))+';\n'+'\n/*********mjbwenjian**********/\n\n'

            file_data += line

            array.remove(nameStr)

        elif old_str5 in line:

            line += '\n\n/*********mjbwenjian**********/\n'+className +' * '+nameStr+' = '+'[['+className+' alloc]initWithFrame:CGRectMake('+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+')];\n'+nameStr+'.backgroundColor = [UIColor whiteColor];'+nameStr+'.layer.borderColor = [[UIColor greenColor] CGColor];'+' '+nameStr+'.layer.cornerRadius ='+str(random.randint(5,10))+';\n'+'\n/*********mjbwenjian**********/\n\n'

            file_data += line

            array.remove(nameStr)

        elif old_str6 in line:

            line += '\n\n/*********mjbwenjian**********/\n'+className +' * '+nameStr+' = '+'[['+className+' alloc]initWithFrame:CGRectMake('+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+')];\n'+nameStr+'.backgroundColor = [UIColor whiteColor];'+nameStr+'.layer.borderColor = [[UIColor greenColor] CGColor];'+' '+nameStr+'.layer.cornerRadius ='+str(random.randint(5,10))+';\n'+'\n/*********mjbwenjian**********/\n\n'

            file_data += line

            array.remove(nameStr)

        elif old_str7 in line:

            line += '\n\n/*********mjbwenjian**********/\n'+className +' * '+nameStr+' = '+'[['+className+' alloc]initWithFrame:CGRectMake('+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+')];\n'+nameStr+'.backgroundColor = [UIColor whiteColor];'+nameStr+'.layer.borderColor = [[UIColor greenColor] CGColor];'+' '+nameStr+'.layer.cornerRadius ='+str(random.randint(5,10))+';\n'+'\n/*********mjbwenjian**********/\n\n'

            file_data += line

            array.remove(nameStr)

        

        else:

            file_data += line

    Ropen.close()

    Wopen=open(file_path,'w')

    Wopen.write(file_data)

    Wopen.close()

    print(file_data)





def file_name(file_dir):

    for root, dirs, files in os.walk(file_dir):

        #print(root) #当前目录路径

        #print(dirs) #当前路径下所有子目录

        print(files) #当前路径下所有非目录子文件

        fileNameArray = files

        #遍历文件夹下的.h和.m文件并添加废代码

        for file in files:

            if '.h' in file:#file_dir+'/'+file含义是file_dir文件夹下的file文件

                HFileAddMj(file_dir+'/'+file, "l;", "m;","n;","q;","y;")#往凡是以"l;", "m;","n;","q;","y;"这些中的某一个结尾的oc语句后添加费代码

            if '.m' in file:

                MFileAddMj(file_dir+'/'+file, "n];", "w];","m];","c];","p];","q];","l];")#往凡是以"n];", "w];","m];","c];","p];","q];","l];"这些中的某一个结尾的oc语句后添加费代码

#要修改的文件所在的文件夹路径

file_floadPath = '/Users/zhoujinglin/Desktop/python-H-M'#要修还得文件所在的文件夹路径


file_name(file_floadPath)

### 回答1: Python脚本可以通过Appium框架来控制iOS手机应用程序。Appium是一个开源的自动化测试框架,它支持iOS和Android平台上的应用程序自动化测试。使用Python编写的Appium脚本可以模拟用户在应用程序的操作,例如点击按钮、输入文本、滑动屏幕等。这样可以大大提高应用程序的测试效率和准确性。 ### 回答2: Python脚本可以与iOS手机应用程序进行交互,使我们能够自动执行不同的任务,例如测试应用程序的功能或执行重复的任务。这是通过使用WebDriverAgent服务实现的,WebDriverAgent服务使用XCTest框架来触发UI事件和读取应用程序的状态。下面是一些步骤,可以使用Python脚本控制iOS手机应用程序。 1.确保您的Mac上已安装XCode,并使用Homebrew安装Carthage。 2.创建Python虚拟环境,安装所需的Python第三方库,如Appium Python客户端,Selenium等。 3.安装最新的Appium客户端并启动Appium服务。 4.启动WebDriverAgent服务。在终端,使用以下命令在iOS设备上启动WebDriverAgent服务: xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination "id=<device udid>" test 5.创建Python脚本,使用Selenium WebDriver连接到Appium服务,以便与iOS应用程序进行交互。这将创建一个连接到Appium服务的会话,并创建一个WebDriver对象,以便在iOS应用程序上执行操作。 6.使用WebDriver对象,可以执行各种UI操作,例如单击按钮,滑动屏幕,输入文本等。您可以使用Appium框架提供的其他功能,例如屏幕截图,查找元素等。 7.使用Python的unittest或pytest框架编写测试用例来测试应用程序的功能。 简而言之,Python脚本可以帮助我们轻松地控制iOS应用程序,并确保它们按预期工作。它可以为我们节省时间和精力,并使我们能够更快速地进行应用程序的UI测试和Debugging。 ### 回答3: Python是一种高级编程语言,可用于控制和管理各种计算设备和软件程序,包括iOS手机应用程序。Python脚本可以通过许多不同的方法控制iOS手机应用程序。以下是一些方法: 1. Appium:Appium是一种用于自动化iOS和Android应用程序的开源测试工具。它提供了一种可以用Python编写的API,这些API允许控制和测试iOS应用程序的各个方面。它可以模拟手机屏幕上的各种手势,如点击、滑动、缩放等,并可以模拟用户在应用程序的输入。 2. Xcode命令行工具:Xcode命令行工具可以让你使用Python脚本来构建、打包和部署iOS应用程序。你可以使用Python脚本生成代码、控制构建和编译过程,并将应用程序部署到你的设备或模拟器上。 3. PyObjC:PyObjC是一个Python库,允许开发人员使用Python编程语言来访问Objective-C代码。这意味着你可以使用Python来控制iOS应用程序的各个方面,如UI元素、网络请求等。PyObjC还提供了很多工具和例子来帮助你理解如何使用Python来控制iOS应用程序。 以上是Python脚本控制iOS手机应用程序的一些方法。每种方法都有其优点和缺点。你可以根据你的需求和使用场景选择最合适的方法。总的来说,使用Python来控制iOS应用程序可以提高开发效率,降低开发成本,并且可以创建更复杂和功能强大的应用程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

义中

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值