吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1648|回复: 7
收起左侧

[已解决] selenium自动化使用QQ登录百度求助

[复制链接]
54264 发表于 2021-2-3 11:09
本帖最后由 54264 于 2021-2-4 14:26 编辑

使用QQ登录时,选择电脑上登录的QQ点击登录百度时报错,报错如图,请各位大佬指点下!!!
2.png
代码
[Python] 纯文本查看 复制代码
from selenium import webdriver
import time

wd = webdriver.Chrome()
wd.maximize_window()
wd.get('https://www.baidu.com/')
wd.implicitly_wait(10)

element = wd.find_element_by_css_selector('#u1 > a').click()

# 使用QQ登录
element = wd.find_element_by_css_selector('#pass_phoenix_btn > ul > li.bd-acc-qzone > a').click()

for handle in wd.window_handles:
    wd.switch_to.window(handle)
    if 'QQ帐号安全登录' in wd.title:
        break

element = wd.find_element_by_xpath('//div[@class="qlogin_list"]//a/*[5]').click()


选中的xpath如图所示
1.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
maoxingren 发表于 2021-2-3 11:28
提示: 作者被禁止或删除 内容自动屏蔽
wxy1997 发表于 2021-2-3 11:31
[Python] 纯文本查看 复制代码
from selenium import webdriver
import pyautogui
import os
from time import sleep


def login(username, password):
    # 加启动配置
    option = webdriver.ChromeOptions()
    # V76以及以上版本
    option.add_experimental_option('useAutomationExtension', False)
    option.add_experimental_option('excludeSwitches', ['enable-automation'])

    # 保护措施,避免失控
    pyautogui.FAILSAFE = True
    # 为所有的PyAutoGUI函数增加延迟。默认延迟时间是0.1秒。
    pyautogui.PAUSE = 0.5

    # 引入chromeDriver.exe (放到浏览器安装同级目录下)
    chromeDriver = "D:/SoftWare/baifen/CentBrowser/Application/chromedriver.exe"

    # environ是一个字符串所对应环境的映像对象;
    os.environ["webdriver.chrome.driver"] = chromeDriver
    browser = webdriver.Chrome(chromeDriver, options=option)

    # 设置浏览器需要打开的url
    url = "https://www.baidu.com/"
    browser.get(url)

    # 最大化窗口
    browser.maximize_window()
    # 点击登录
    # browser.find_element_by_class_name("s-top-login-btn").click()
    sleep(1)
    # 转灰度操作=关闭 grayscale
    # 需要安装opencv-python 可选参数confidence的设置是关键,一般很多人不设置,数值在0-1之间,1为100%相似,
    loginXY = pyautogui.locateCenterOnScreen('screenshot/login.png', grayscale=False, confidence=0.5)
    # 点击登录
    pyautogui.click(loginXY)

    sleep(1)
    # 点击用户名密码登录
    userLoginXY = pyautogui.locateCenterOnScreen('screenshot/userLogin.png', grayscale=False, confidence=0.5)
    pyautogui.click(userLoginXY)
    sleep(0.5)

    # 输入用户名 和 密码
    browser.find_element_by_xpath("//div[@class='tang-foreground']//input[@name='userName']").send_keys(username)
    sleep(0.5)
    browser.find_element_by_xpath("//div[@class='tang-foreground']//input[@name='password']").send_keys(password)
    # 提交登录表单
    browser.find_element_by_class_name("pass-button-submit").submit()


if __name__ == '__main__':
    # username  password 替换成自己的百度账号密码
    login('username', 'password')

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
54264 + 1 + 1 谢谢@Thanks!

查看全部评分

wxy1997 发表于 2021-2-3 11:32
萌萌哒的小白 发表于 2021-2-3 11:41
你轮训切换完window需要再切换下iframe啊!我这边看到是在iframe里面的.
wd.switch_to.frame("ptlogin_iframe")
然后在定位点击

免费评分

参与人数 1吾爱币 +1 收起 理由
54264 + 1 谢谢@Thanks!

查看全部评分

Test_dada 发表于 2021-2-3 11:50
第32行代码定位不到,解决方法:查看是否嵌套iframe/是否开另外窗口
如果是,需要先跳转再定位
都不是的话,在跳转后加个sleep等待下页面加载,即可

Test_dada 发表于 2021-2-3 12:00
[Python] 纯文本查看 复制代码
from selenium import webdriver
import time

wd = webdriver.Chrome()
wd.maximize_window()
wd.get('https://www.baidu.com/')
wd.implicitly_wait(10)

element = wd.find_element_by_css_selector('#u1 > a').click()

# 使用QQ登录
element = wd.find_element_by_css_selector('#pass_phoenix_btn > ul > li.bd-acc-qzone > a').click()

for handle in wd.window_handles:
    wd.switch_to.window(handle)
    if 'QQ帐号安全登录' in wd.title:
        break

wd.switch_to.frame("ptlogin_iframe")
element = wd.find_element_by_xpath('//div[@class="qlogin_list"]//a/*[5]').click()


加上倒数第二行的iframe跳转就好了

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
54264 + 1 + 1 谢谢@Thanks!

查看全部评分

头像被屏蔽
赵无良影视 发表于 2021-4-5 15:29
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-17 03:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表