Dmail 发表于 2019-1-8 04:14

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()

冥界3大法王 发表于 2019-1-8 08:34

@Dmail
能自己不求人编出来的都不是饭桶。以后各种资源都要和谐。所以不会编程是不行的。

Dmail 发表于 2019-1-8 14:57

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:24

本帖最后由 Dmail 于 2019-1-8 04:25 编辑

如果不需要界面的话,将38行的代码替换成
driver=ChromeDriverNOBrowser()
即可


最后感觉这个有点像按键精灵哈=。=

super-cucumber 发表于 2019-1-8 05:07

学习一下!

Quincy379 发表于 2019-1-8 08:18

不错不错!!!

Light紫星 发表于 2019-1-8 08:26

感谢分享

myisperfect 发表于 2019-1-8 08:27

感谢分享学习一下

liuwl123 发表于 2019-1-8 09:01

厉害了楼主

水鸟 发表于 2019-1-8 09:15

sleep感觉不好用,按键精灵的延时比较好用

ruphay 发表于 2019-1-8 09:16

学习一下,这算是自动化脚本了,用途很大,感谢分享
页: [1] 2 3 4
查看完整版本: Python+selenium+Chrome模拟登录du娘