公司有很多管理平台,账号有禁用机制,每个月至少登录一次,否则禁用。导致有时候想登录某个平台的时候,发现账号已经被禁用了,还得走流程解禁。因此用python实现了一下自动登录,每天定时任务运行一次。ps:只需要账号密码即可登录

主要是使用  selenium 包的  webdriver ,然后需要下载一下 对应浏览器的驱动,我使用的是chrome 对应版本:版本 78.0.3904.108(正式版本) (64 位) ,版本在浏览器菜单-设置-关于chrome  就可以看到

注意点:

1、使用的python 版本是3.7

2、我用的chrome,所以需要下载 chromedriver ,下载地址:http://chromedriver.storage.googleapis.com/index.html  ,下载下来以后放到 chrome 安装目录下,还要配置环境变量,Path下面新增环境变量: 如下图:

3、配置完后,重启电脑生效(不知道是不是都需要重启。。。)

具体python 代码如下:

from selenium import webdriver;
from selenium.webdriver.chrome.options import Options;
import time;
import utils; def autologin(url, username, password, country, accountadmin):
print("======= auto login begin ", country, "=========")
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=chrome_options)
try:
# 登录xxx.com
driver.get(url) # 等10秒,浏览器打开和网页跳转需要时间
time.sleep(5)
print(" send username and password ") # 取ID为txtLoginCode的网页元素(用户名输入元素)
elem_user = driver.find_element_by_id('username')
# 清空输入
elem_user.clear()
# 键入用户名
elem_user.send_keys(username)
# 取ID为txtPwd的网页元素(密码输入元素)
elem_pass = driver.find_element_by_id('password')
# 清空输入
elem_pass.clear()
# 键入密码
elem_pass.send_keys(password)
# 取ID为btnLogin的登录按钮
elem_login = driver.find_element_by_name('submit')
# 点击登录按钮
elem_login.click()
print(" submit ") time.sleep(5)
# 登陆成功找一个页面上的标识,如果有这个元素 说明登陆成功,如果没有,则登陆失败
elems = driver.find_element_by_class_name('easyui-layout');
return '<tr style=" height:50px;"><td>' + country + ' </td><td>' + url + '&nbsp;</td><td>' + '&nbsp;&nbsp;ok </td><td>' + accountadmin + '</td></tr>';
except Exception as error:
print(error)
# 如果没有标识,则会报异常,说明登陆失败, 失败原因在 id 为"msg"的 div里面
errormsg = driver.find_element_by_id("msg");
return '<tr style=" height:50px;"><td>' + country + ' </td><td>' + url + '&nbsp;</td><td>' + "&nbsp;&nbsp;<span style='color:red'>login fail with error: " + errormsg.get_attribute('innerHTML')+ "<span></td><td>" + accountadmin + "</td></tr>";
finally:
print("======= auto login end ", country, "=========");
print(''); start = time.time() result = "<table>"
result += autologin("https://www.123*****.com/login", "zhanglifeng", "password", '俄罗斯', "");
result += autologin("https://www.abc*****.com/login/", "zhanglifeng", "password", '越南', "");
result += "</table>" end = time.time()
timelog = "%.2f" % (end - start);
result += "<br /><br /> 自动登录运行时间 " + timelog + "秒"; # 发送自动登陆结果到邮箱
utils.sendEmail('自动登录', result, ['zhanglifeng@***.com.cn']);
exit(0)

python自动登录代码的更多相关文章

  1. Python自动生成代码工具

    项目中有一个需求,对一个基类而言,拥有一个比较方法和拷贝方法,某些地方需要频繁地对这两个方法进行调用.对于所有子类而言,需要重写这两个方法,并在其中维护类内一些成员变量.例如有一个变量m_iMyVal ...

  2. java 自动登录代码

    javaBean的代码    package bean;    import java.io.Serializable;    public class Admin implements Serial ...

  3. 吴裕雄--天生自然PYTHON学习笔记:python自动登录网站

    打开 www. 5 l eta . com 网站,如果己经通过某用户名进行了登录,那么先退出登录 . 登录该网站 的步骤一般如下 : ( 1 )单击右上角的“登录”按钮. ( 2 )先输入账号. ( ...

  4. Python 自动登录网站(处理Cookie)

    http://digiter.iteye.com/blog/1300884 Python代码   def login():     cj = cookielib.CookieJar()     ope ...

  5. Python 自动登录哔哩哔哩(2captcha打码平台)

    前言 研究爬虫的各位小伙伴都知道,需要登录才能获取信息的网站,是比较难爬的,原因就是在于,现在各大网站为了反爬,都加入了图片验证码,滑动验证码之类的干扰 本篇就针对哔哩哔哩的滑动验证码进行讲解和破解 ...

  6. 5、Selenium+Python自动登录163邮箱发送邮件

    1.Selenium实现自动化,需要定位元素,以下查看163邮箱的登录元素 (1)登录(定位到登录框,登录框是一个iframe,如果没有定位到iframe,是无法定位到账号框与密码框) 定位到邮箱框( ...

  7. 转载——Python模拟登录代码

    ''' Created on 2014-2-20 @author: Vincent ''' import urllib.parse import gzip import json import re ...

  8. Python模拟登录代码

    注:访问http://127.0.0.1:8080/user/6,总是会要求必须有登录权限,也就是,若未登录,访问该页面,会跳转到登陆页面. 全自动模拟登录 半自动模拟登录:

  9. python 自动登录网页

    语言:python 浏览器:chrome 工具:chrome控制台 #!/usr/bin/python # coding: GBK import urllib,urllib2,httplib,cook ...

随机推荐

  1. SpringCloud微服务(02):Ribbon和Feign组件,实现服务调用的负载均衡

    本文源码:GitHub·点这里 || GitEE·点这里 一.Ribbon简介 1.基本概念 Ribbon是一个客户端的负载均衡(Load Balancer,简称LB)器,它提供对大量的HTTP和TC ...

  2. (四十六)c#Winform自定义控件-水波进度条-HZHControls

    官网 http://www.hzhcontrols.com 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kww ...

  3. JAVAEE学期总结

         声明:除第一张思维导图为博主所制作,其他思维导图皆来自网络,若侵权,望告知,必删除.                                                      ...

  4. SSM框架之Spring(3)IOC及依赖注入(基于注解的实现)

    Spring(3)IOC及依赖注入(基于注解的实现) 学习基于注解的 IoC 配置,大家脑海里首先得有一个认知,即注解配置和 xml 配置要实现的功能都是一样 的,都是要降低程序间的耦合.只是配置的形 ...

  5. js相同的正则多次调用test()返回的值却不同

    项目中文件上传需要验证文件的格式,第一次正常,第二次就验证不通过了.在验证的地方console.log()两遍,发现结果不一样 !!! 正则和文件名都没变,但是两次的验证结果不同. this.reg ...

  6. 解决Xcode10 Library not loaded: /usr/lib/libstdc++.6造成的crash及报错

    关键字1:dyld: Library not loaded: /usr/lib/libstdc++.6.dylib   Referenced from: 关键字2:Reason: no suitabl ...

  7. swift多线程定时器

    swift多线程定时器的使用 func countDown(_ timeOut:Int,view: UIView){ var timeout = timeOut let queue:DispatchQ ...

  8. 记一次mq无法正常生产消息的事故排查过程

    早上上班后得知,服务费未同步到代理商系统.查看draft_server系统生产环境的log,显示在往RabbitMQ推数据时出现异常:no route to host. 2019-07-29 01:3 ...

  9. linux 命令之touch

    转自:http://www.maomao365.com/?p=2037 一.touch命令简介touch的命令功能说明: 1 可以通过touch新建一个文件; 2 可以修改文件的时间戳; 3 可以批量 ...

  10. 高通平台开机LOGO修改LK(bootloader)下实现【转】

    网络上已经有许多在kernel中修改开机Logo的文章,本文就LK下实现开机logo进行简述 需要用到ffmpeg工具,没有安装ffmpeg请参考这里: http://blog.csdn.net/re ...