公司有很多管理平台,账号有禁用机制,每个月至少登录一次,否则禁用。导致有时候想登录某个平台的时候,发现账号已经被禁用了,还得走流程解禁。因此用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. angularjs中directive指令与component组件有什么区别?

     壹 ❀ 引 我在前面花了两篇博客分别系统化介绍了angularjs中的directive指令与component组件,当然directive也能实现组件这点毋庸置疑.在了解完两者后,即便我们知道co ...

  2. Nginx 常用模块

    Nginx 常用模块 1. ngx_http_autoindex_module # ngx_http_autoindex_module模块处理以斜杠字符(' / ')结尾的请求,并生成一个目录列表. ...

  3. Swoole Redis 连接池的实现

    概述 这是关于 Swoole 入门学习的第九篇文章:Swoole Redis 连接池的实现. 第八篇:Swoole MySQL 连接池的实现 第七篇:Swoole RPC 的实现 第六篇:Swoole ...

  4. Java中间消息件——ActiveMQ入门级运用

    先来说一说我们为什么要用这个东西啊! 比如,我们现在有这样了个问题要解决: 这样,我们就要用到中间消息间了 然后我们就说一下什么是中间消息间吧. 采用消息传送机制/消息队列 的中间件技术,进行数据交流 ...

  5. boostrap 学习笔记

    bootstrap : 是全球最受欢迎的前端组件库,用于开发响应式布局.移动设备优先的 WEB 项目. 用于项目样式的快速搭建,真的是..特别快.. 随便找两个cdn引用就能使用了. https:// ...

  6. 一种简单的REST API接口加密实现,只允许自己的产品调用后台,防止接口被刷

    在项目上线后,后台接口很容易通过抓包工具看到, 难免被人为构造恶意请求攻击我们的系统,相信大家都或多或少都遇到过短信验证码被刷.疯狂留言灌水.数据被恶意爬取等问题,这种直接抓接口然后写个循环调用的行为 ...

  7. Mac进行Flutter的相关开发配置

    参考链接:https://www.cnblogs.com/tangtianming/p/10797227.html

  8. iOS----------iPhone导出手机所有短信

    第一步:手机连接到itunes  选择本电脑备份   备份的时候不要加密  然后立即备份 第二步:前往文件夹,找到itunes的备份路径~/Library/Application Support/Mo ...

  9. bay——Oracle RAC环境下ASM磁盘组扩容.docx

    https://www.cnblogs.com/polestar/p/10115263.html Oracle RAC环境下ASM磁盘组扩容 生产环境注意调整以下参数: +++++++++++++++ ...

  10. JAVA 高级特性枚举和泛型

    枚举: 语法:  public enum 枚举名 { 枚举值表(罗列所有值) }  例如:  public enum EnumTest{MON,TUE,WED.THU,FRI,SAT,SUN} 枚举操 ...