QQ空间登录时,可以通过登录成功的Q号实现自动快速登录,免去了识别图形验证码的头疼事,当然在执行QQ空间点赞之前,可以做一个自动登录QQ的脚本,通过VKey、pykeyboard、win32api, win32gui, win32con, win32print这些包来模拟键盘输入。
为了方便识别web元素,我把所有登录的QQ昵称都改为了Q号,比如Q号12345678的QQ昵称也为12345678。
登录QQ空间:
输入:
driver | web驱动
usedQQNumber | 使用过的QQ号,默认为空
输出:
usedQQNumber | 每登录一次之后,记录一个已登录过的Q号
def qZoneLogin_Shorcut(driver, usedQQNumber):
switchToFrame('login_frame')
QQList = [l for l in driver.find_element_by_class_name('qlogin_list').find_elements(By.XPATH, '*') if
l.text not in usedQQNumber and l.text != '']
while not QQList:
nextPage = driver.find_element_by_class_name('nextPage')
if not nextPage.get_attribute('style') == 'display: none;':
nextPage.click()
SLEEP(2)
QQList = [l for l in driver.find_element_by_class_name('qlogin_list').find_elements(By.XPATH, '*') if
l.text not in usedQQNumber and l.text != '']
else:
return usedQQNumber
INFO('QQ ID: ' + QQList[0].text)
usedQQNumber.append(QQList[0].text)
QQList[0].click()
SLEEP(3)
# 进入新页面,可能会因为网络问题造成页面加载不出来
while not is_element_present(driver, By.ID, 'tb_logout'):
driver.refresh()
SLEEP(3)
return usedQQNumber
QQ登录页中有Frame:login_frame
如果本机登录多个Q号,那么QQ空间快速登录列表中可能包含多页
QQList找到了登录模块中没有登录过的Q号,如果当前分页中的Q号都被登录过,那么我们去点击下一页按钮&