Python+selenium+Chrome模拟登录du娘
用js去模拟人去操作哈,点击页面然后输入账号密码,底层都是调的包,没啥技术含量的..深夜打扰,告辞!安装selenium模块
windows系统在控制台下输入下面代码执行
pip install selenium
测试如图:
代码如下:'''
文件名:L13.py
作者:小饭团
创建时间:2019年1月8日03:31:44
文件描述:登录百度
'''
#-*- coding:UTF-8 -*-
#导入模块
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
import time
# 无界面模式
def ChromeDriverNOBrowser():
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
#64位系统的浏览器一定要加上下面的这句话
chrome_options.add_argument('--no-sandbox')
driverChrome = webdriver.Chrome(chrome_options=chrome_options)
'''
driverChrome.get('http://www.baidu.com')
print(driverChrome.title)
'''
return driverChrome
# 有界面的就简单了
def ChromeDriverBrowser():
chrome_options = Options()
#64位系统的浏览器一定要加上下面的这句话
chrome_options.add_argument('--no-sandbox')
driverChrome = webdriver.Chrome(chrome_options=chrome_options)
#driverChrome.get('http://www.baidu.com')
#print(driverChrome.title)
return driverChrome
def loginBaidu(userName,passWord):
driver=ChromeDriverBrowser()
#访问百度
driver.get('https://www.baidu.com')
#开始尝试打开登录窗口,执行js点击登录按钮
js='document.querySelector(\'#u1 > a.lb\').click()'
driver.execute_script(js)
#给1秒加载时间
time.sleep(1)
#初次判断登录窗口是否打开
pList=driver.find_elements_by_xpath('//*[@id="pass_phoenix_btn"]/ul/li/a')
PListLength=len(pList)
print(PListLength)
#如果未登录窗口未显示,进入判断窗口是否打开的循环
while PListLength==0:
#判断是否打开登录界面,如果PListLength为0则为还没有打开
pList=driver.find_elements_by_xpath('//*[@id="pass_phoenix_btn"]/ul/li/a')
PListLength=len(pList)
print(PListLength)
#执行js点击登录按钮
js='document.querySelector(\'#u1 > a.lb\').click()'
driver.execute_script(js)
time.sleep(5)
#点击使用账号密码登录
js='document.querySelector(\'#TANGRAM__PSP_10__footerULoginBtn\').click()'
driver.execute_script(js)
#给1秒加载时间
time.sleep(1)
#输入账号
js="document.querySelector('#TANGRAM__PSP_10__userName').value='"+userName+"'"
driver.execute_script(js)
#输入密码 #TANGRAM__PSP_10__password
js="document.querySelector('#TANGRAM__PSP_10__password').value='"+passWord+"'"
driver.execute_script(js)
#给1秒加载时间
time.sleep(1)
#点击登录 #TANGRAM__PSP_10__submit
js="document.querySelector('#TANGRAM__PSP_10__submit').click()"
driver.execute_script(js)
time.sleep(5)
driver.quit()
def main():
loginBaidu('吾爱破解测试专用账号','test12345')
#密码乱写的所以会提示密码错误之类的,或者要输验证码啥的哈
if __name__ == '__main__':
main() @Dmail
能自己不求人编出来的都不是饭桶。以后各种资源都要和谐。所以不会编程是不行的。 yc19951005 发表于 2019-1-8 11:03
楼主有个问题还望指导一下,就是js的点击事件的绝对路径 应该怎么获取..
用谷歌浏览器审查元素,比如想点击百度。
查找该元素的js方法有两个
document.querySelector()返回找到的第一个元素
document.querySelectorAll()返回元素列表
点击百度的代码如下
document.querySelector('#su').click()
document.querySelectorAll('#su').click()
本帖最后由 Dmail 于 2019-1-8 04:25 编辑
如果不需要界面的话,将38行的代码替换成
driver=ChromeDriverNOBrowser()
即可
最后感觉这个有点像按键精灵哈=。= 学习一下! 不错不错!!! 感谢分享 感谢分享学习一下 厉害了楼主 sleep感觉不好用,按键精灵的延时比较好用 学习一下,这算是自动化脚本了,用途很大,感谢分享