用python+selenium从百度获取本地明日的天气信息并根据温度情况邮件提醒

从百度天气获取当地明天的天气情况,如果明天下雨,请发送邮件通知全体同事带伞,

如果明天气温低于10度,请邮件提醒同事注意保暖,如果气温高于30度则提醒同事注意高温。

假设存在发送邮件的方法self.send_email(email_content)

代码如下:

#coding=utf-8
from selenium import webdriver
import unittest
from time import sleep

class WeatherReport(unittest.TestCase):

    def setUp(self):
        self.dr = webdriver.Chrome()
        self.weather, self.the_highest_temperature, self.the_lowest_temperatrue = self.get_tomorrow_weather_and_temperature()
        self.content = self.email_content()

    def get_tomorrow_weather_and_temperature(self):
        self.baidu_search(‘成都天气‘)
        sleep(5)
        weather = self.dr.find_elements_by_css_selector(‘.op_weather4_twoicon_weath‘)[1].text #首先获取明日天气
        print(‘明日天气为%s‘ %weather)
        temperature = self.dr.find_elements_by_css_selector(‘.op_weather4_twoicon_temp‘)[1].text #其次获取明日温度
        the_highest_temperature = int(temperature.split(‘ ~ ‘)[0]) #从温度中获取明日最高温度并转为整型
        print(‘明日最高温度%s℃‘ %the_highest_temperature)
        the_lowest_temperature = temperature.split(‘ ~ ‘)[1] #从温度中获取明日最低温度
        print(‘明日最低温度%s‘ %the_lowest_temperature)
        return weather, the_highest_temperature, the_lowest_temperature

    def baidu_search(self, CityWeather):
        self.dr.get(‘http://www.baidu.com‘)
        self.dr.find_element_by_id(‘kw‘).send_keys(CityWeather)
        self.dr.find_element_by_id(‘su‘).click()

    def email_content(self):
        if ‘雨‘ in self.weather:
            content = ‘通知:明天有雨,请全体同事带伞!‘
        else:
            if self.the_highest_temperature > 30:
                content = ‘提醒:明日气温高于30度,请全体同事注意高温‘
            elif self.the_highest_temperature < 10:
                content = ‘提醒:明日气温低于10度,请全体同事注意保暖‘
            else:
                content = ‘‘
        return content

    def test_send_email(self):
        print(‘%s‘ %self.content)

    def tearDown(self):
        self.dr.quit()

if __name__ == ‘__main__‘:
    unittest.main()

网页如下:

结果如下:

时间: 2024-12-28 09:03:20

用python+selenium从百度获取本地明日的天气信息并根据温度情况邮件提醒的相关文章

获取本地计算机的网络信息

Windows网络编程第六章探测网络中的在线设备 实验:获取本地计算机的网络信息 实验分析:主要练习对GetAdaptersInfo().GetNetworkParams().GetInterfaceInfo().GetIPAddrTable()等API函数的运用,实验中需要注意的是需要两次调用该函数,第一次返回本机要调查信息的数量,第二次调用显示具体信息. GetInfo.h void pAdapter(); void Network(); void NumberOfInterfaces();

【Mac + Python + Selenium】之获取验证码图片code并进行登录

初稿代码,可以忽略不计(自己留着看) #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2020/01/15 13:27 # @Author : zc # @File : 115test.py from selenium import webdriver from selenium.webdriver.common.by import By from time import sleep from PIL import Image,Im

获取本地计算机的主机信息

#include <afxcmn.h> // MFC support for Windows Common Controls #endif // _AFX_NO_AFXCMN_SUPPORT #include "IPhelper/Iphlpapi.h" #pragma comment(lib, "IPhelper/IPHLPAPI.LIB") DWORD dwLen = 0, dwError; dwError = GetAdaptersInfo(NULL

Linux下编程获取本地IP地址的常见方法

转载于:http://blog.csdn.net/k346k346/article/details/48231933 在进行linux网络编程时,经常用到本机IP地址.本文罗列一下常见方法,以备不时之需. 获取本机IP地址,是一个相当灵活的操作,原因是网络地址的设置非常灵活而且都是允许用户进行个性化设置的.比如一台计算机上可以有多块物理网卡或者虚拟网卡,一个网卡上可以绑定多个IP地址,用户可以为网卡设置别名,可以重命名网卡.用户计算机所在网络拓扑结构未知,主机名设置是一个可选项,并且同样可以为一

LINUX - 获取本地ip

Linux编程获取本机IP地址的几种方法 参考:https://blog.csdn.net/zhongmushu/article/details/89944990 在进行Linux网络编程时,经常会需要获取本机IP地址,除了常规的读取配置文件外,本文罗列几种个人所知的编程常用方法,仅供参考,如有错误请指出. 方法一:使用ioctl()获取本地IP地址 Linux下可以使用ioctl()函数以及结构体 struct ifreq和结构体struct ifconf来获取网络接口的各种信息.具体过程是先

WEB自动化(Python+selenium)的API

在做Web自动化过程中,汇总了Python+selenium的API相关方法,给公司里的同事做了第二次培训,分享给大家                                                                                                                     WEB自动化测试培训2 课程目的 一.Webdriver API 的使用 课程内容 1    控制浏览器 Selenium 主要提供的是操作页面上各

豆瓣自动注册、回贴脚本 powered by Python &amp; Selenium

前言,之前在豆瓣日志写了这片文章,结果被豆瓣删除了...哎 ----- 所删除内容 ----- <豆瓣自动注册.回贴脚本 powered by Python & Selenium> (2018-01-12 15:29) 故事起因: 上周的时候吧,发现有条疯狗在这张剧照(天生杀人狂)下面骂我.如果只是骂我傻逼我还能忍,毕竟人在江湖飘哪人不挨刀.但是你问候的范围大了,那作为一个社会主义核心价值观没有问题的青年,我必须得去操一下你妈了吧.请点击操他妈热线.结果这个怂逼居然还发私信骂我然后还把

python+selenium自动化软件测试(第10章):测试驱动TDD

测试驱动开发模式,要求开发在写业务代码的时候,先写出测试代码,同时单元测试例子决定了如何来写产品的代码,并且不断的成功的执行编写的所有的单元测试例子,不断的完善单元测试例子进而完善产品代码, 这样随着功能的开发完成,测试代码也会对应的完成, 很显然,这是一个全新的开发模式, 在一定程度上,可以完全的提高软件的质量,以及开发可以对自己写的代码进行一个全面的评估和测试. TDD 模式是一个很大的概念,在这里, 我重点介绍下测试驱动模式与自动化的融合以及精简自动化的测试代码.下面我们来看一个登录的案例

python selenium 元素定位(三)

上两篇的博文中介绍了python selenium的环境搭建和编写的第一个自动化测试脚本,从第二篇的例子中看出来再做UI级别的自动化测试的时候,有一个至关重要的因素,那就是元素的定位,只有从页面上找到这个元素,我们从能对这个元素进行操作,那么我们下来看看如何来定位元素. selenium 提供了8中元素定位的方法(大家要学习元素的定位,首先可以学习下前端的基础知识,这样有利于我们学习自动化测试,大家可以看一下:http://www.runoob.com/) find_element_by_id