selenium自动化使用QQ登录百度求助
本帖最后由 54264 于 2021-2-4 14:26 编辑使用QQ登录时,选择电脑上登录的QQ点击登录百度时报错,报错如图,请各位大佬指点下!!!
代码
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/*').click()
选中的xpath如图所示
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__':
# usernamepassword 替换成自己的百度账号密码
login('username', 'password')
稍微改下就可以了这是百度账号密码登录 你轮训切换完window需要再切换下iframe啊!我这边看到是在iframe里面的.
wd.switch_to.frame("ptlogin_iframe")
然后在定位点击 第32行代码定位不到,解决方法:查看是否嵌套iframe/是否开另外窗口
如果是,需要先跳转再定位
都不是的话,在跳转后加个sleep等待下页面加载,即可
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/*').click()
加上倒数第二行的iframe跳转就好了
页:
[1]