欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

selenium--iframe之模拟qq空间登录

程序员文章站 2024-03-16 17:18:46
...

文章目录

前言

我在模拟登录qq的时候,发现无论如何都定位不了qq的“账号密码登录”,怎么都进不去qq的登录页面,如下图所示
selenium--iframe之模拟qq空间登录

分析

  1. 打开 https://qzone.qq.com/
  2. 然后点击二维码登录这块,背景出现了灰色,定位到iframe位置的时候,就说明iframe区域是整个登录区域
    selenium--iframe之模拟qq空间登录
  3. 左下角就是显示的iframe的一些属性,后面切换iframe的时候会用到这些属性

切换iframe

  1. 由于登录按钮是在 iframe 上,所以第一步需要把定位器切换到 iframe上
  2. iframe有专门的切换方法,switch_to_frame()
#coding:utf-8

import time
from selenium import webdriver

#=============================chromedriver.exe的位置===================================
driver = webdriver.Chrome('C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe')
driver.get("https://qzone.qq.com/")
driver.implicitly_wait(10)

#====================此处是我用过的定位登录页面,然而没有成功=============================
#driver.find_element_by_xpath('//*div[@class="bottom hide]/a[@id="switcher_plogin"]').click()

#=============================切换到iframe上面=========================================
driver.switch_to_frame('login_frame')

#============================切换到登录页面后就常规登录就行=============================
driver.find_element_by_id('switcher_plogin').click()
driver.find_element_by_id('u').clear()
driver.find_element_by_id('u').send_keys('12345678')
driver.find_element_by_id('p').clear()
driver.find_element_by_id('p').send_keys('12345678')
driver.find_element_by_id("login_button").click()
time.sleep(5)

#后面验证码手动操作