使用的是谷歌的驱动,使用selenium自动化操作,比较新的点是从扫码登陆切换成账号密码登陆时的操作
以下是QQ游戏模拟登陆的源码:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
# 导入动作链
from selenium.webdriver import ActionChains
from time import sleep
qq_email = 'qq账号'
qq_password = '邮箱密码'
s = Service(r'chromedriver.exe')
driver = webdriver.Chrome(service=s)
# 访问qq空间
driver.get('https://mail.qq.com/')
sleep(3)
# 获取"账号密码登陆"选项, 如果定位的元素在iframe中,则需要切换
driver.switch_to.frame('login_frame') # 值是iframe的id值
# 这下面的操作是在iframe中的
first_btn = driver.find_element(By.ID, 'switcher_plogin')
# 创建动作链对象, 这几步不这样执行是没有用的,因为click会变化掉
action = ActionChains( driver )
# 将鼠标移动到这个元素上move_to_element,并且立即执行perform()
action.move_to_element( first_btn ).perform()
first_btn.click()
sleep(1)
# 获取账号输入框 输入账号
email_input = driver.find_element(By.XPATH, '//*[@id="u"]')
email_input.send_keys( qq_email )
sleep(3)
pwd_input = driver.find_element(By.XPATH, '//*[@id="p"]')
pwd_input.send_keys( qq_password )
sleep(3)
# 获取登陆按钮
login_input = driver.find_element(By.XPATH, '//*[@id="login_button"]')
login_input.click()
sleep(30)
driver.close()