精华内容
下载资源
问答
  • 自动化脚本
    千次阅读
    2021-02-27 08:49:55

    本文将介绍一个Java+TestNG+Maven+Selenium的web自动化测试脚本环境下selenium简单线性脚本的编写,并提供全部代码。

    文中将看到,使用selenium编写一个能操作浏览器的脚本是非常容易的。而简单线性脚本的编写是下一步编写页面对象脚本的基础。

    1.在开始之前,我想明确一下,自动化测试的基本原理。

    有的测试人员认为自动化测试很神秘,很神奇。恰恰相反, 自动化测试很简单。

    自动化测试,一般分三个步骤:

    1)取预期结果;

    2)取实际结果;

    3)断言:比较1)和2)来判断测试是否通过;

    从历史角度来看,自动化测试的出现早于专职测试人员的出现。也就是说在开始有我们这些专门做软件测试的测试人员之前,自动化测试已经存在了。

    原因就是他 简单。

    selenium自动化测试,在自动化测试里也是属于超级 简单的一类。但前提是必须理解上面说的自动化测试原理,以及其他一些自动化测试设计原则。否则,我们将会看到, 简单的项目也会失败 。有很多由初、中级开发人员或会一点点代码的测试人员编写的selenium自动化测试项目,因此失败。

    2.简单的selenium测试脚本编写,一般也是分三个步骤:

    1)定位一个元素

    2)操作一个元素

    3)断言

    好,这里用百度首页的搜索做一个例子:

    3b42e56952b7e42d58065e179239c059.png

    1 package simplewebtest.test;

    2

    3 import java.util.concurrent.TimeUnit;

    4

    5 import org.openqa.selenium.By;

    6 import org.openqa.selenium.WebDriver;

    7 import org.openqa.selenium.firefox.FirefoxDriver;

    8 import org.testng.annotations.Test;

    9

    10 public classTestBaiduHome {

    11

    12 @Test

    13 public void searchSomething(){

    14

    15 WebDriver driver=new FirefoxDriver();//打开Firefox; open firefox

    16 driver.get("http://www.baidu.com");//打开百度open the url

    17 driver.findElement(By.id("kw1")).sendKeys("GitHub");//输入搜索关键字“GitHub";input search keyword

    18 driver.findElement(By.id("su1")).click();//点击搜索按钮click the search button

    19 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);//等页面加载,10秒内不加载成功即报超时。waiting for 10 seconds

    20 String aResult=driver.findElement(By.xpath(".//*[@id='4']/h3/a")).getText();//取第四条搜索结果的标题。 get the text of 4th search result

    21 assert aResult.contains("GitHub");//做断言 assertion

    22 driver.findElement(By.xpath(".//*[@id='4']/h3/a")).click();//打开第四个搜索结果。Open the 4th search result on baidu

    23 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);//等页面加载,10秒内不加载成功即报超时。waiting for 10 seconds

    24

    25 //获取所有窗口的handle,然后逐个切换,直到切换到最新窗口 switch to the new window

    26 for(String winHandle : driver.getWindowHandles()){

    27 driver.switchTo().window(winHandle);

    28 }

    29

    30 String aTitle=driver.getTitle();//取新窗口的title

    31 System.out.println("current widnow title is:"+aTitle);//打出来看看

    32 assert aTitle.contains("GitHub");//断言

    33

    34 }

    35 }

    View Code

    本系列所有代码https://github.com/zhangting85/simpleWebtest,

    这个例子存放在src/test/java/simplewebtest/test/TestBaiduHome.java

    下面逐行解释:

    WebDriver driver=new FirefoxDriver();

    这里是声明了一个 WebDriver 类型的对象引用,我给他起名叫driver;

    然后让这个driver指向WebDriver的一个子类(FirefoxDriver)的对象;

    我们知道FirefoxDriver继承自WebDriver,IEDriver也继承自WebDriver;

    就像苹果继承自水果,橘子也继承自水果;

    这里用了Java的向上转型,使用子类的对象来初始化父类的引用。(注:实际上Webdriver是一个接口。)

    这将产生什么效果呢?

    我们在driver上调用方法的时候,都是先查找WebDriver里的方法定义,然后jvm去他的子类比如FirfoxDriver中找到其在子类中的实现,再执行的。比如FirefoxDriver的get方法和IEDriver的get方法,他们具体执行的代码内容明显是不一样的。但我们的脚本,只要改变driver引用的子类,而不用改变我后面的方法调用。

    也就是说,我们用firefox和用ie,除了第一句话新建对象时不一样,后面的方法调用都是一样的。

    java会自动根据我们上面这句话里创建的对象,去选择他应该执行的实际代码。

    这也就是JAVA里的多态,一句话记住多态:用子类对象初始化父类引用,方法调用时自动执行子类代码,成员变量调用时自动调用父类成员变量。

    以上,题外话略多,是希望测试人员不要自我放弃,写个程序不会有多难,Java的基础必须要掌握。

    driver.get("http://www.baidu.com");

    调用Webdriver的get方法,跳转到制定的URL;

    凡是这里跳转不过去的,十有八九是因为webdriver版本太低,浏览器版本太高,请改上一节讲的pom.xml里配置的webdriver版本号至最新版。

    driver.findElement(By.id("kw1")).sendKeys("GitHub");//输入搜索关键字“GitHub";input search keyword

    driver.findElement(By.id("su1")).click();//点击搜索按钮click the search button

    这里调用Webdriver的findElement方法来查找页面元素。然后在找到的页面元素WebElement对象上调用sendKeys方法来打字和click方法来点击。

    如果你问我这个id的值是怎么来的,那么你可以去看一下FireBug这个插件,他会替你找到每一个元素的一切属性。

    如果你要定位的元素没有id,你还可以用className,Xpath,css,等等来定位。

    另一个插件FirePath可以帮你产生任意元素的xpath表达式。

    findElement方法需要一个By类型的参数。

    但是代码里我们使用了By.id("kw1") 这里的id是一个静态方法,他的声明是:

    public static By id(java.lang.String id)

    所以我们调用By.id的时候,他会返回一个By类型的对象给我们。

    至于下面findElement是怎样用这个对象来查找页面元素的,暂时不讲。简单来说,就是把我们传入的id传给对应的Driver,由driver去查找元素,再返回给我们。

    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

    很常用的一个等待页面加载的语句。这个implicityWait是会对driver的下一个findElement调用起作用的。

    百度这个搜索结果页面很有意思,虽然我们感觉不出来,但搜索结果其实是异步显示上去的,所以不加等待他就会找不到元素。

    而后面点击搜索结果打开一个窗口的时候我们再次用了等待。

    另外,这个方法并不是对所有网页都有效,有时我们要用一些别的等待。还有尽量不要用Thread.sleep

    String aResult=driver.findElement(By.xpath(".//*[@id='4']/h3/a")).getText();//取第四条搜索结果的标题。 get the text of 4th search result

    assert aResult.contains("GitHub");//做断言 assertion

    这两句,首先去取实际结果,也就是根据某个xpath表达式找到的搜索结果元素上的Text

    然后,再判断他是否符合预期结果,即包含有“GitHub”这个字符串。

    assert是TestNG提供的,这里不要用if else去判断这个字符串。TestNG的assert结果会反映在测试报告里。

    也不要自己去抛出一个代表断言失败的异常,TestNG会替你完成这件事。

    以上两个错误是中低级开发人员编写测试框架时常犯的。

    我们既然用了TestNG,请至少尝试去用TestNG的功能。

    for(String winHandle : driver.getWindowHandles()){

    driver.switchTo().window(winHandle);

    }

    这段代码表示切换窗口。有意思的是,他是在窗口打开后,先取出所有窗口的hanles,然后一个一个切过去。

    因为新窗口必定在最后,所以不论你有几个窗口,这段代码总能找到最新一个窗口。如果你还需要操作老窗口,

    可以事先把老窗口的Handle保存起来,以后再切回来。

    以上一个简单的线性测试脚本编写完毕。基本的元素定位、元素操作、窗口切换、断言都有了,你可以查看官网的文档,了解各个api的更多方法。

    熟练地编写线性脚本大概需要个把月,有编程基础的更快,这一篇介绍的内容基本没有难度。下一篇介绍进阶的线性脚本,包括frame,actions,关闭浏览器,运行javascript,WebDriverWait。

    觉得不错的可关注微信公众号在手机上观看,让你用手机边玩边看

    更多相关内容
  • 超好用,分享8个 Python 自动化脚本

    万次阅读 多人点赞 2022-06-18 13:35:30
    每天你都可能会执行许多重复的任务,例如阅读新闻、发邮件、查看天气、打开书签、清理文件夹等等,使用自动化脚本,就无需手动一次又一次地完成这些任务,非常方便。而在某种程度上,Python 就是自动化的代名词。 ...

    每天你都可能会执行许多重复的任务,例如阅读新闻、发邮件、查看天气、打开书签、清理文件夹等等,使用自动化脚本,就无需手动一次又一次地完成这些任务,非常方便。而在某种程度上,Python 就是自动化的代名词。

    今天分享 6 个非常有用的 Python 自动化脚本。喜欢记得收藏、关注、点赞。

    注:文末提供技术交流群

    1、自动化阅读网页新闻

    这个脚本能够实现从网页中抓取文本,然后自动化语音朗读,当你想听新闻的时候,这是个不错的选择。

    代码分为两大部分,第一通过爬虫抓取网页文本呢,第二通过阅读工具来朗读文本。

    需要的第三方库:

    Beautiful Soup - 经典的HTML/XML文本解析器,用来提取爬下来的网页信息

    requests - 好用到逆天的HTTP工具,用来向网页发送请求获取数据

    Pyttsx3 - 将文本转换为语音,并控制速率、频率和语音

    import pyttsx3
    import requests
    from bs4 import BeautifulSoup
    engine = pyttsx3.init('sapi5')
    voices = engine.getProperty('voices')
    newVoiceRate = 130                       ## Reduce The Speech Rate
    engine.setProperty('rate',newVoiceRate)
    engine.setProperty('voice', voices[1].id)
    def speak(audio):
      engine.say(audio)
      engine.runAndWait()
    text = str(input("Paste article\n"))
    res = requests.get(text)
    soup = BeautifulSoup(res.text,'html.parser')
    
    articles = []
    for i in range(len(soup.select('.p'))):
        article = soup.select('.p')[i].getText().strip()
        articles.append(article)
    text = " ".join(articles)
    speak(text)
    # engine.save_to_file(text, 'test.mp3') ## If you want to save the speech as a audio file
    engine.runAndWait()
    

    2、自动化数据探索

    数据探索是数据科学项目的第一步,你需要了解数据的基本信息才能进一步分析更深的价值。

    一般我们会用pandas、matplotlib等工具来探索数据,但需要自己编写大量代码,如果想提高效率,Dtale是个不错的选择。

    Dtale特点是用一行代码生成自动化分析报告,它结合了Flask后端和React前端,为我们提供了一种查看和分析Pandas数据结构的简便方法。

    我们可以在Jupyter上实用Dtale。

    需要的第三方库:

    Dtale - 自动生成分析报告

    ### Importing Seaborn Library For Some Datasets
    import seaborn as sns
    
    ### Printing Inbuilt Datasets of Seaborn Library
    print(sns.get_dataset_names())
    
    
    ### Loading Titanic Dataset
    df=sns.load_dataset('titanic')
    
    ### Importing The Library
    import dtale
    
    #### Generating Quick Summary
    dtale.show(df)
    

    3、自动发送多封邮件

    这个脚本可以帮助我们批量定时发送邮件,邮件内容、附件也可以自定义调整,非常的实用。

    相比较邮件客户端,Python脚本的优点在于可以智能、批量、高定制化地部署邮件服务。

    需要的第三方库:

    Email - 用于管理电子邮件消息

    Smtlib - 向SMTP服务器发送电子邮件,它定义了一个 SMTP 客户端会话对象,该对象可将邮件发送到互联网上任何带有 SMTP 或 ESMTP 监听程序的计算机

    Pandas - 用于数据分析清洗地工具

    import smtplib 
    from email.message import EmailMessage
    import pandas as pd
    
    def send_email(remail, rsubject, rcontent):
        email = EmailMessage()                          ## Creating a object for EmailMessage
        email['from'] = 'The Pythoneer Here'            ## Person who is sending
        email['to'] = remail                            ## Whom we are sending
        email['subject'] = rsubject                     ## Subject of email
        email.set_content(rcontent)                     ## content of email
        with smtplib.SMTP(host='smtp.gmail.com',port=587)as smtp:     
            smtp.ehlo()                                 ## server object
            smtp.starttls()                             ## used to send data between server and client
            smtp.login("deltadelta371@gmail.com","delta@371") ## login id and password of gmail
            smtp.send_message(email)                    ## Sending email
            print("email send to ",remail)              ## Printing success message
    
    if __name__ == '__main__':
        df = pd.read_excel('list.xlsx')
        length = len(df)+1
    
        for index, item in df.iterrows():
            email = item[0]
            subject = item[1]
            content = item[2]
    
            send_email(email,subject,content)
    

    4、将 PDF 转换为音频文件

    脚本可以将 pdf 转换为音频文件,原理也很简单,首先用 PyPDF 提取 pdf 中的文本,然后用 Pyttsx3 将文本转语音。

    import pyttsx3,PyPDF2 
    pdfreader = PyPDF2.PdfFileReader(open('story.pdf','rb')) 
    speaker = pyttsx3.init() 
    for page_num in range(pdfreader.numPages):    
        text = pdfreader.getPage(page_num).extractText()  ## extracting text from the PDF 
        cleaned_text = text.strip().replace('\n',' ')  ## Removes unnecessary spaces and break lines 
        print(cleaned_text)                ## Print the text from PDF 
        #speaker.say(cleaned_text)        ## Let The Speaker Speak The Text 
        speaker.save_to_file(cleaned_text,'story.mp3')  ## Saving Text In a audio file 'story.mp3' 
        speaker.runAndWait() 
    speaker.stop() 
    

    5、从列表中播放随机音乐

    这个脚本会从歌曲文件夹中随机选择一首歌进行播放,需要注意的是 os.startfile 仅支持 Windows 系统。

    import random, os 
    music_dir = 'G:\\new english songs' 
    songs = os.listdir(music_dir) 
    song = random.randint(0,len(songs)) 
    print(songs[song])  ## Prints The Song Name 
    os.startfile(os.path.join(music_dir, songs[0]))  
    

    6、智能天气信息

    国家气象局网站提供获取天气预报的 API,直接返回 json 格式的天气数据。所以只需要从 json 里取出对应的字段就可以了。

    下面是指定城市(县、区)天气的网址,直接打开网址,就会返回对应城市的天气数据。比如:

    http://www.weather.com.cn/data/cityinfo/101021200.html 上海徐汇区对应的天气网址。

    具体代码如下:

    mport requests 
    import json 
    import logging as log 
     
    def get_weather_wind(url): 
        r = requests.get(url) 
        if r.status_code != 200: 
            log.error("Can't get weather data!") 
        info = json.loads(r.content.decode()) 
     
        # get wind data 
        data = info['weatherinfo'] 
        WD = data['WD'] 
        WS = data['WS'] 
        return "{}({})".format(WD, WS) 
     
     
    def get_weather_city(url): 
        # open url and get return data 
        r = requests.get(url) 
        if r.status_code != 200: 
            log.error("Can't get weather data!") 
     
        # convert string to json 
        info = json.loads(r.content.decode()) 
     
        # get useful data 
        data = info['weatherinfo'] 
        city = data['city'] 
        temp1 = data['temp1'] 
        temp2 = data['temp2'] 
        weather = data['weather'] 
        return "{} {} {}~{}".format(city, weather, temp1, temp2) 
     
     
    if __name__ == '__main__': 
        msg = """**天气提醒**:   
     
    {} {}   
    {} {}   
     
    来源: 国家气象局 
    """.format( 
        get_weather_city('http://www.weather.com.cn/data/cityinfo/101021200.html'), 
        get_weather_wind('http://www.weather.com.cn/data/sk/101021200.html'), 
        get_weather_city('http://www.weather.com.cn/data/cityinfo/101020900.html'), 
        get_weather_wind('http://www.weather.com.cn/data/sk/101020900.html') 
    ) 
        print(msg) 
    

    运行结果如下所示:

    7、长网址变短网址

    有时,那些大URL变得非常恼火,很难阅读和共享,此脚可以将长网址变为短网址。

    import contextlib 
    from urllib.parse import urlencode 
    from urllib.request import urlopen 
    import sys 
     
    def make_tiny(url): 
     request_url = ('http://tinyurl.com/api-create.php?' +  
     urlencode({'url':url})) 
     with contextlib.closing(urlopen(request_url)) as response: 
      return response.read().decode('utf-8') 
     
    def main(): 
     for tinyurl in map(make_tiny, sys.argv[1:]): 
      print(tinyurl) 
     
    if __name__ == '__main__': 
     main() 
    

    这个脚本非常实用,比如说有内容平台是屏蔽公众号文章的,那么就可以把公众号文章的链接变为短链接,然后插入其中,就可以实现绕过

    8、清理下载文件夹

    世界上最混乱的事情之一是开发人员的下载文件夹,里面存放了很多杂乱无章的文件,此脚本将根据大小限制来清理您的下载文件夹,有限清理比较旧的文件:

    import os 
    import threading 
    import time 
      
      
    def get_file_list(file_path): 
    #文件按最后修改时间排序 
        dir_list = os.listdir(file_path) 
        if not dir_list: 
            return 
        else: 
            dir_list = sorted(dir_list, key=lambda x: os.path.getmtime(os.path.join(file_path, x))) 
        return dir_list 
      
    def get_size(file_path): 
        """[summary] 
        Args: 
            file_path ([type]): [目录] 
     
        Returns: 
            [type]: 返回目录大小,MB 
        """ 
        totalsize=0 
        for filename in os.listdir(file_path): 
            totalsize=totalsize+os.path.getsize(os.path.join(file_path, filename)) 
        #print(totalsize / 1024 / 1024) 
        return totalsize / 1024 / 1024 
      
    def detect_file_size(file_path, size_Max, size_Del): 
        """[summary] 
        Args: 
            file_path ([type]): [文件目录] 
            size_Max ([type]): [文件夹最大大小] 
            size_Del ([type]): [超过size_Max时要删除的大小] 
        """ 
        print(get_size(file_path)) 
        if get_size(file_path) > size_Max: 
            fileList = get_file_list(file_path) 
            for i in range(len(fileList)): 
                if get_size(file_path) > (size_Max - size_Del): 
                    print ("del :%d %s" % (i + 1, fileList[i])) 
                    #os.remove(file_path + fileList[i]) 
         
    

    推荐文章

    技术交流

    欢迎转载、收藏、有所收获点赞支持一下!数据、代码可以找我获取

    在这里插入图片描述

    目前开通了技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

    • 方式①、发送如下图片至微信,长按识别,后台回复:加群;
    • 方式②、添加微信号:dkl88191,备注:来自CSDN
    • 方式③、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

    长按关注

    展开全文
  • 运维自动化,已经成为运维必不可少的一部分,下面附上自己写的监控nginx_status脚本,大神轻喷#! usrbinpython#coding:utf-8importurllib.requestimportsocket#自动获取主机ip地址myname=socket.getfqdn(...

    o55g08d9dv.jpg广告关闭

    腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元!

    运维自动化,已经成为运维必不可少的一部分,下面附上自己写的监控nginx_status脚本,大神轻喷#! usrbinpython#coding:utf-8importurllib.requestimportsocket#自动获取主机ip地址myname=socket.getfqdn(socket.gethostname())myaddr=socket.gethostbyname(myname) classmonitornginx(object):def__init__(self):self...

    cpcly8i8q7.jpeg

    之前有读者朋友说 airtest 官方支持将自动化脚本编译成 apk 直接运行,照着官方提供的文档操作了一遍,发现不少的坑,今天带大家一起来填这些坑。 在开始编写自动化脚本之前,我们首先要下载安装 jdk,并配置 jdk 和 adb 到环境变量中。 以刷抖音短视频这一自动化操作为例,首先我们使用 airtest ide 新建一个 .air ...

    0fg9odnkn6.png

    前言python自动化的脚本开发完成后需提交到git代码仓库,接下来就是用jenkins拉取代码去构建自动化代码了git源码管理代码上传git仓库这里就不介绍了,可以看之前写过的github相关这篇https:www.cnblogs.comyoyoketangp7302515.html自己公司内部的一般用gitlab,可以参考这篇https:www.cnblogs.comyoyoketangp10282529...

    思路过程为:使用requests请求一个要监控的web网址,根据返回的状态值不是200或者出现异常的时候,我们发送邮件并重启服务器。 接下来看代码部分,(该代码脚本使用在linux服务器中运行的web服务为例): #! usrbinenv pythonimport osimport smtplibimport requests #电子邮件的账号密码email_address = os.environ...

    k7cwsv8lru.jpeg

    本篇文章将以之前聊过的 uiautomator2 编写自动化脚本,来帮小姐姐解决这个问题 2. 准备在开始实战之前,需要做如下准备:1、在 pc 端配置 android 开发环境 2、安装依赖库及应用其中:uiautomator2 负责自动化; weditor 负责连接设备,查看应用的界面元素# 安装依赖pip3 install -u uiautomator2 # 如果需要截屏...

    mbpl4a1uww.jpeg

    今天,更新一篇利用jenkins这套框架,调用python自动化脚本,并输出测试报告的手把手实操文章; 步骤非常详细,且整篇文章非常完整; 有每一步的操作截图,每位同学都可以跟着实操(建议多操作几遍); -- ido老徐 2020. 02.07 一、前言 在用python做自动化测试时,我们写好代码, 然后需要执行才能得到测试报告...

    ghlr323a3k.jpeg

    一、前言大家好,有关python操作pdf的案例之前已经写过一个? pdf批量合并,这个案例初衷只是给大家提供一个便利的脚本,并没有太多讲解原理,其中涉及的就是pdf处理很实用的模块pypdf2,本文就好好剖析一下这个模块,主要将涉及os 模块综合应用glob 模块综合应用pypdf2 模块操作二、基本操作pypdf2导入模块的代码常常...

    filename=rootlog%s%(n)print(filename)sftp_down_file(host,port,username,passwordfilename,d:大数据数据%s%(n))执行后自动巡检python脚本shell运维脚本#! binbash#主机信息每日巡检ipaddr=$(ifconfigeth0|grepinetaddr|awk-f{print$13})#环境变量path没设好,在cron里执行时有很多命令会找不到exportpath=usrlocal...

    y9uj65mkdo.png

    可见python自动化办公确实能够帮助我们解放自己的双手,不过在写自动化脚本之前也要掌握原理,明确思路再进行! 如果对本文的代码和数据感兴趣可以在后台回复自动化获取,最后还是希望大家能够理解python办公自动化的一个核心就是批量操作-解放双手,让复杂的工作自动化!...

    1 selenium环境搭建1.1selenium selenium是测试web应用程序的框架,selenium为没有测试脚本的人提供了(seleniumide)提供了录制回放的工具,同时它也提供了特定域的语言来编写测试脚本,如c#,java,python等,selenium可以针对最现代的web浏览器运行测试,如firefox,chrome,ie,open等浏览器,selenium可以在windows...

    cmd_c = ssh2(host, port, username, password,cmd_c)#针对脚本进行参数化设置def process_cmd_file(conf, section,ip_f, num_f):host = ip_f port = conf.get(section, port) username =conf.get(section, username) password = conf.get(section, password)remote_file = conf.get(section, remote_file) print...

    file_lst.append(i) for x in file_lst: for y in file_lst: if x ! = y and os.path.exists(x) and os.path.exists(y): if filecmp.cmp(x, y):os.remove(y)写在最后通过本文的python自动化脚本制作过程,我们可以再次体会python办公自动化的强大,同时本次实现的功能可以和之前? 自动整理文件的脚本结合使用!...

    83fzr7pyq0.png

    os.remove(y) 写在最后通过本文的python自动化脚本制作过程,我们可以再次体会python办公自动化的强大,同时本次实现的功能可以和之前? 自动整理文件的脚本结合使用! 如果对本文的代码和数据感兴趣可以在后台回复自动化获取。 最后还是希望大家能够理解python办公自动化的一个核心就是批量操作-解放双手,让复杂的...

    file_lst.append(i) for x in file_lst: for y in file_lst: if x ! = y and os.path.exists(x) and os.path.exists(y): if filecmp.cmp(x, y):os.remove(y)写在最后通过本文的python自动化脚本制作过程,我们可以再次体会python办公自动化的强大,同时本次实现的功能可以和之前自动整理文件的脚本结合使用!...

    7t4f09cpx8.jpeg

    随着it运维技术日益更新,近几年运维自动化越来越火,而且学习python的人非常的火爆,尤其是python自动化运维开发,得到了很多前辈的推崇。 这里我也记录一下以前学习django的一点点心得和方法,方便以后自己查阅,如果能帮助初学者是最好的了! 好的,其他不多说了,博文滴走起。 一、系统实战环境系统版本:cnetos...

    今天我们来简单列举一下:kickistart、puppet、cobbler、chef、func、shell命令自动化等等各种自动化工具,今天我们来研究一下使用python来编写自动化脚本,那python设计的目标是什么呢? python的设计哲学是“优雅”、“明确”、“简单”。 因此,perl语言中“总是有多种方法来做同一件事”的理念在python开发者中...

    p4auihn77q.jpeg

    我写了一个python脚本来查找这类页面并且让我的帐户能够自动向它们发送消息。 该脚本采用两个参数,一个初始主题标签和一个要在类别标签中查找的字符串...借助人工智能、自动化脚本和数据科学的力量,在代码脚本自动运转时,我可以高枕无忧。 它是一个特别尽责的推销员,让我能够有自己的时间享受生活...

    我写了一个python脚本来查找这类页面并且让我的帐户能够自动向它们发送消息。 该脚本采用两个参数,一个初始主题标签和一个要在类别标签中查找的字符串...借助人工智能、自动化脚本和数据科学的力量,在代码脚本自动运转时,我可以高枕无忧。 它是一个特别尽责的推销员,让我能够有自己的时间享受生活...

    s0vzf7iqdu.jpeg

    1、环境配置 1、电脑配jdk 1.8+版本,allure所依赖的环境2、allure , 单独的包,安装好后需要配环境变量3、pytest、allure-pytest、allure-python-commons、selenium这几个通过pip安装即可2、文件目录1、report : 报告最终生成的目录 2、xml : xml数据文件,用来生成最终报告(中间产物)3、20.py 自动化脚本文件4...

    在做接口自动化测试时,遇到下面这个疑惑,然后再群里请教了大家,讨论如下,可以参考下:讨论1: 上海—橙子探索测试 10:12:34 自动化测试中...否则的话,只能通过接口来造前置条件的数据,来保证脚本的健壮性上海—橙子探索测试 10:39:53@天 嗯 我目前是通过sql构建数据的 用完又清掉所以导致每个...

    展开全文
  • 4个常用的脚本自动化数据探索、自动生成素描草图....

    1、引言

    最近小屌丝在休假, 难得的清净…
    我们直接来分享4个在实际工作中运用较多的脚本,
    提升工作效率的同时,也解放双手!
    在这里插入图片描述

    2、自动发送多封邮件

    这个脚本的功能在实际的工作中非常的常用,如:

    • 批量定时发送邮件
    • 自定义调整邮件的内容、附件;

    2.1 模块介绍

    模块:
    第三方库:

    • Pandas: 用于数据分析清洗地工具

    原理:
    Smtlib - 向SMTP服务器发送电子邮件,它定义了一个 SMTP 客户端会话对象,该对象可将邮件发送到互联网上任何带有 SMTP 或 ESMTP 监听程序的计算机

    模块安装

    老规矩, pip 方式安装:

    pip install pandas
    

    其他方式安装:

    Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!
    Python3:我低调的只用一行代码,就导入Python所有库!!

    2.2 代码实战

    代码展示:

    # -*- coding:utf-8 -*-
    # @Time   : 2022-01-24
    # @Author : carl_DJ
    
    import smtplib
    from email.message import EmailMessage
    import pandas as pd
    
    # 创建email
    def send_email(remail, rsubject, rcontent):
        email = EmailMessage()                           
        #填写发送人信息
        email['from'] = 'The Pythoneer Here'    
        #填写收件人信息       
        email['to'] = remail     
        #邮件标题                       
        email['subject'] = rsubject   
        #邮件内容                  
        email.set_content(rcontent)     
        #设置邮箱服务器基本信息                
        with smtplib.SMTP(host='smtp.gmail.com',port=587)as smtp:
            smtp.ehlo()                                 
            smtp.starttls()                
            #登录信息            
            smtp.login("carl@xxx.com","carl@371") 
            #发送邮件
            smtp.send_message(email)                    
            print("email send to ",remail)              
    
    if __name__ == '__main__':
        df = pd.read_excel('list.xlsx')
        length = len(df)+1
    
        for index, item in df.iterrows():
            email = item[0]
            subject = item[1]
            content = item[2]
    
            send_email(email,subject,content)
    
    
    

    3、自动桌面提示

    3.1 模块介绍

    这个脚本会自动触发windows桌面通知,提示重要事项,比如说:您已工作两小时,该休息了

    我们可以设定固定时间提示,比如隔10分钟、1小时等

    第三方库

    • win10toast: 用于发送桌面通知的工具

    模块安装

    pip install win10toast
    

    3.2 代码实战

    代码展示:

    # -*- coding:utf-8 -*-
    # @Time   : 2022-01-24
    # @Author : carl_DJ
    
    from win10toast import ToastNotifier
    import time
    toaster = ToastNotifier()
    
    #基本信息设置
    header = input("What You Want Me To Remember\n")
    text = input("Releated Message\n")
    time_min=float(input("In how many minutes?\n"))
    
    time_min = time_min * 60
    print("Setting up reminder..")
    time.sleep(2)
    print("all set!")
    time.sleep(time_min)
    toaster.show_toast(f"{header}", f"{text}", duration=10, threaded=True)
    while toaster.notification_active(): 
    	time.sleep(0.005)
    
    

    4、自动生成素描草图

    4.1 模块介绍

    这个脚本可以把彩色图片转化为铅笔素描草图,对人像、景色都有很好的效果。

    第三方库

    • Opencv - 计算机视觉工具,可以实现多元化的图像视频处理,有Python接口

    opencv 就不过多介绍了,小鱼的博客也写了好多关于opencv的实例,如:

    4.2 代码实战

    代码展示:

    # -*- coding:utf-8 -*-
    # @Time   : 2022-01-24
    # @Author : carl_DJ
    
    import cv2
    
    #读取img图片
    img = cv2.imread("queue.jpg")
    #将BGR格式图片转换成灰度图片
    gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    #对灰度图片进行反相
    inverted_gray_image = 255 - gray_image
    
    #设置图片的高斯矩阵长和宽都是19,标差为0
    blurred_inverted_gray_image = cv2.GaussianBlur(inverted_gray_image, (19, 19), 0)
    
    # 反转模糊图像处理
    inverted_blurred_image = 255 - blurred_inverted_gray_image
    
    # 得到素描图像
    sketck = cv2.divide(gray_image, inverted_blurred_image, scale=256.0)
    
    cv2.imshow("Original Image", img)
    cv2.imshow("Pencil Sketch", sketck)
    cv2.waitKey(0)
    
    

    5、自动化阅读网页新闻

    5.1 模块介绍

    这个脚本能够实现从网页中抓取文本,然后自动化语音朗读,当你想听新闻的时候,这是个不错的选择。

    思路
    整体分两部分

    • 爬取网页内容
    • 使用工具来阅读文本内容

    第三方库

    • Beautiful Soup - 经典的HTML/XML文本解析器,用来提取爬下来的网页信息;
    • requests - 好用到逆天的HTTP工具,用来向网页发送请求获取数据;
    • Pyttsx3 - 将文本转换为语音,并控制速率、频率和语音;

    模块安装

    pip install bs4 , requests,Pyttsx3
    

    5.2 代码实战

    代码展示:

    # -*- coding:utf-8 -*-
    # @Time   : 2022-01-24
    # @Author : carl_DJ
    
    import pyttsx3
    import requests
    from bs4 import BeautifulSoup
    engine = pyttsx3.init('sapi5')
    voices = engine.getProperty('voices')
    
    newVoiceRate = 130                      
    engine.setProperty('rate',newVoiceRate)
    engine.setProperty('voice', voices[1].id)
    
    def speak(audio):
        engine.say(audio)
        engine.runAndWait()
    text = str(input("Paste article\n"))
    res = requests.get(text)
    soup = BeautifulSoup(res.text,'html.parser')
    
    articles = []
    for i in range(len(soup.select('.p'))):
        article = soup.select('.p')[i].getText().strip()
        articles.append(article)
    text = " ".join(articles)
    speak(text)
    # engine.save_to_file(text, 'test.mp3') ## If you want to save the speech as a audio file
    engine.runAndWait()
    
    

    6、总结

    今天的内容,差不多就这么多了,
    在实际工作中,还有很多常用的脚本,
    如果我们平时善于总结整理,可能就会发现,
    利用好脚本,对我们工作效率有很多的提升。
    如果你也有很多私藏的脚本,不妨也分享出来,让小鱼也多学习学习呢~

    展开全文
  • 每天你都可能会执行许多重复的任务,例如阅读 pdf、播放音乐、查看天气、打开书签、清理文件夹等等,使用自动化脚本,就无需手动一次又一次地完成这些任务,非常方便。而在某种程度上,Python 就是自动化的代名词。...
  • 我们实际跑自动化脚本的过程中,是需要用脚本调用appium启动app的,接下来就尝试写Python脚本启动app并登陆app。环境为Windows10 + Python3.7 + appium1.18.0 + Android手机 + 今日头条app + Pycharm 一,连接测试...
  • AutoIT自动化脚本工具与脚本录制 带帮助文档,入门教程,和API使用示例!
  • 自动化脚本如何编写?

    千次阅读 2020-12-15 02:20:16
    首先,我们看一个视频 ,通过视频,了解下什么是自动化脚本 。这个是我用auto.js写的一个 抖音自动养号脚本 。大体功能就是自动私信,评论,关注 ,有兴趣可以先去一下链接了解 。目前编写自动化脚本的语言主要有...
  • java+selenium自动化脚本编写

    千次阅读 2021-02-27 08:50:11
    实训项目:创盟后台管理,页面自动化脚本编写使用工具:java+selenium1)java+selenium环境搭建文档2)创盟项目后台管理系统链接一、Selenium介绍Selenium 主要用于Web 应用程序的自动化测试,但并不局限于此,它还...
  • iOS非越狱自动化脚本的方案

    千次阅读 热门讨论 2021-12-31 17:02:01
    因为苹果审核过于严格,私有 API 是不允许上架 appstore,但是自动化脚本是很多手游外挂的刚需,为了绕过苹果的限制,采用现有的合法规则的办法,实现 iPhone 的自动化操作,类似按键精灵的功能,我查询了很多资料,...
  • 5个可以让你事半功倍的Python自动化脚本

    万次阅读 多人点赞 2022-03-30 17:12:24
    今天小编来为大家介绍几个Python自动化脚本,也希望可以大大地提高各位读者朋友的工作效率,给各位带来便捷。 从JSON数据转化CSV文件 下面的这个Python脚本能够将JSON数据转化到CSV文件的表格当中去,我们输入的是...
  • docker部署项目自动化脚本

    千次阅读 2021-11-02 17:18:37
    docker部署项目脚本脚本会完成容器停止,删除,镜像删除,镜像构造,运行容器等一系列操作 该脚本配合jenkins使用,真的舒服 #!/bin/bash echo "开始执行脚本" #操作/项目路径(Dockerfile存放的路劲),当前文件也...
  • 懒人做自动化测试之二--自动化脚本录制
  • 本文介绍了自动化测试的辅助工具,Selenium IDE的基本使用,有助于自动化工程师辅助编辑自动化脚本,新手初步建立简单自动化脚本
  • 怎么去使用python写自动化脚本

    千次阅读 2021-09-10 15:57:27
    第一次听到脚本,会不会觉得特别厉害呢?小编就有这样的感觉,事实上,脚本确实真的很厉害,能解决我们软件运行的大小问题,比如游戏时候,脚本也是很常见的哦下面就教大家写脚本,一起来学习下吧
  • 完成软件和环境的安装后就可以开始移动端自动化脚本的编写了。手机打开USB调试模式,连接手机。此时去命令窗口查看自己的设备是否已经连接。让后打开Appium Server,进行配置,设置Android与Java的环境地址。启动...
  • 入门自动化测试,很难把所有的知识点掌握以后才开工,但是有几个小点可以一开始就考虑好,这样能大大减少后续重新修改代码的机率,节省时间。
  • 自动化脚本录制工具katalon recorder

    千次阅读 2021-06-14 21:31:06
    一,开篇 自动化测试对测试人员来说,是一个觉得有技术含量的活,可当写不到20个场景,超不过1000行的代码时就觉得枯燥乏味 mei
  • 网页自动化脚本

    千次阅读 2020-07-29 15:39:50
    准备工具:VG浏览器,火狐浏览器! VG浏览器是制作一个网页自动化脚本的软件,软件可以轻松的制作各种脚本,还可以生成EXE程序,类似按键精灵!
  • 如何使用python写自动化脚本

    千次阅读 2020-12-03 14:03:59
    小编就有这样的感觉,事实上,脚本确实真的很厉害,能解决我们软件运行的大小问题,比如游戏时候,脚本也是很常见的哦下面就教大家写脚本,一起来学习下吧 准备工具: 安装python 安装教程点击...
  • 自动化脚本——java

    万次阅读 2019-01-30 14:41:31
    自动化脚本 本文将介绍一个Java+TestNG+Maven+Selenium的web自动化测试脚本环境下selenium简单线性脚本的编写,并提供全部代码。 文中将看到,使用selenium编写一个能操作浏览器的脚本是非常容易的。而简单线性脚本...
  • 如何在 Jenkins 上运行自动化脚本

    千次阅读 2020-09-22 11:54:30
    上一节课程中我们学习了如何统一管理配置信息和测试数据,此次课程将带领大家学习如何运行jenkins,然后把前面写的测试脚本放到jenkins上运行。最后介绍如何通过划分testSuite管理测试案例。为了完成此次课程目标,...
  • 快捷指令,自动化脚本工具

    千次阅读 2022-06-08 17:41:41
    快捷指令工具使用手册本工具减人工操作大量的常用指令,进行制作。对日常运维和熟悉掌握Linux指令进行快速掌握技巧,并进行人工智能操作。 选择你要的指令可直接发送给如下第三方软件:终端Xshell、终端SecureCRT...
  • 本已收会围绕整个开发过程,从配置和规划到自动化测试和创建不同的命令行工具。本书涵盖了基础脚本到标准库Python包使用都所有常用知识。通过本书的学习,你将了解如何基于理想的资源规划、实施和发...
  • CMD命令自动化脚本_艾孜尔江撰

    万次阅读 2021-04-29 09:33:45
    艾孜尔江写的库: local function commander(argToExcute) local result = io.popen(argToExcute) local strInfo = result:read("*all") return strInfo end function tryTillSucceed(arg,tryTimes) ...
  • 如何设计自动化测试用例或脚本自动化始终遵循手动测试。通常,将在AUT上执行一轮或多轮手动测试。这意味着手动测试用例已经存在并且已经执行了至少一次。例如,假设以下是您的手动测试用例。它只...
  • 【Java】在Java中实现自动化脚本

    千次阅读 2021-03-10 16:15:47
    起因:最近在玩一款知名手游,日常任务较为机械繁琐,故想利用脚本来...利用Java自带的自动化测试类Robot,包为java.awt.Robot。 Robot中提供了许多用于自动化测试的方法: 2. Java获取鼠标指针的屏幕位置; 思路:.
  • 安卓自动化脚本录制工具

    千次阅读 2021-05-26 13:08:07
    安卓自动化脚本录制工具是一款基于JavaScript语言开发的自动化脚本辅助工具,软件已封装好所有方法,简单易用,即使不懂脚本语言也可使用。安卓自动化脚本录制工具能够让你的手机进行完全自动化的操作,支持挂机操作...
  • 前面章节利用本地 “html” 文件的虚拟场景辅助我们了解了元素的定位、元素的操作,熟悉了正常...从这一章节开始,将对之前接口自动化测试篇章所使用的旅游网这样的一个项目,进行真实的UI自动化脚本的设计。.........
  • Python自动化脚本登录校园网

    千次阅读 多人点赞 2021-06-14 23:31:24
    Python自动化脚本登录校园网 所需工具:python编译环境(博主使用的pycharm作演示,其实在cmd也可以操作!) selenium自动化脚本 .bat批处理文件 第一步,通过pycharm创建一个项目 点击左上角file,然后new project 2...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 706,716
精华内容 282,686
关键字:

自动化脚本