添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
from selenium import webdriver            # 导入浏览器控制包
from selenium.webdriver.common.keys import Key   # 导入键盘控制包
driver= webdriver.Chrome()
driver.get('https://mail.qq.com/cgi-bin/loginpage')     # 启动浏览器并访问QQ邮箱登录界面
driver.maximize_window()             # 最大化窗口(此步可以省略)
frame = driver.find_element_by_id('login_frame')  # 须首先定位到元素所在的iframe下
driver.switch_to_frame(frame)
driver.find_element_by_id('u').send_keys('*******')  # 括号为账号
driver.find_element_by_id('p').send_keys('*******')  # 括号为密码
driver.find_element_by_id('p').send_keys(Keys.ENTER) # 按下ENTER键
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
from selenium import webdriver            # 导入浏览器控制包
from selenium.webdriver.common.keys import Key   # 导入键盘控制包
driver= webdriver.Chrome()
driver.get('https://mail.qq.com/cgi-bin/loginpage')     # 启动浏览器并访问QQ邮箱登录界面
driver.maximize_window()             # 最大化窗口(此步可以省略)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
其实实现自动打开浏览器并访问指定网站的核心代码就两行: driver = webdriver.Chrome() driver.get(‘https://mail.qq.com/cgi-bin/loginpage’) (这里为了隐藏我的账号密码,我就用*****代替了。)
driver.find_element_by_id('u').send_keys('*******')  # 括号为账号
driver.find_element_by_id('p').send_keys('*******')  # 括号为密码
        我们列一下完整的代码
       
from selenium import webdriver            # 导入浏览器控制包
from selenium.webdriver.common.keys import Key   # 导入键盘控制包
driver= webdriver.Chrome()
driver.get('https://mail.qq.com/cgi-bin/loginpage')     # 启动浏览器并访问QQ邮箱登录界面
driver.maximize_window()             # 最大化窗口(此步可以省略)
driver.find_element_by_id('u').send_keys('*******')  # 括号为账号
driver.find_element_by_id('p').send_keys('*******')  # 括号为密码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
我们先来运行代码检测一下。 结果发现,浏览器一如既往自动打开了QQ邮箱登录网站,但是却没有自动输入我们的账号和密码。 返回检查代码,同样我们发现了程序报错: Message: no such element: Unable to locate element: {“method”:“css selector”,“selector”:"[id=“u”]"} 也就是程序并没有找到我们的 的元素位置。 这是为什么?难道我们选择的方法和特征错误了? 可是在开发者工具中我们明明定位到了且唯一? 骚年,莫要慌! 之前说过,通常我们定位不到元素的问题有三: 页面请求超时 元素定位方法不对 页面存在iframe或内嵌窗口 首先,页面请求正常,网站是正常打开并显示出输入账号和密码框的; 其次,我们也坚信自己使用的元素定位方法正确; 最后,通常来说就是页面中存在iframe或内嵌窗口。 那么我们来检查一下,按【Ctrl+F】打开查找框,输入 “iframe” ,然后【回车】。 发现果然存在内部框架结构,且我们的输入账号和密码的代码也在iframe内部。 找到了为什么定位不到元素的原因,接下来就好办了。
from selenium import webdriver            # 导入浏览器控制包
from selenium.webdriver.common.keys import Key   # 导入键盘控制包
        完整的代码如下:
       
from selenium import webdriver            # 导入浏览器控制包
from selenium.webdriver.common.keys import Key   # 导入键盘控制包
driver= webdriver.Chrome()
driver.get('https://mail.qq.com/cgi-bin/loginpage')     # 启动浏览器并访问QQ邮箱登录界面
driver.maximize_window()             # 最大化窗口(此步可以省略)
driver.find_element_by_id('u').send_keys('*******')  # 括号为账号
driver.find_element_by_id('p').send_keys('*******')  # 括号为密码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
我们再运行代码,成功实现了账号密码的自动输入。 为了方便,我们采用程序自动按下【Enter键】的方式来实现最终的登陆,最终实现的代码也很简单,也不需要重新定位元素,直接在上面定位元素基础上按下【Enter键】。
driver.find_element_by_id('p').send_keys(Keys.ENTER)
        我们来看看最终的效果
       
from selenium import webdriver            # 导入浏览器控制包
from selenium.webdriver.common.keys import Key   # 导入键盘控制包
driver= webdriver.Chrome()
driver.get('https://mail.qq.com/cgi-bin/loginpage')     # 启动浏览器并访问QQ邮箱登录界面
driver.maximize_window()             # 最大化窗口(此步可以省略)
frame = driver.find_element_by_id('login_frame')  # 须首先定位到元素所在的iframe下
driver.switch_to_frame(frame)
driver.find_element_by_id('u').send_keys('*******'
)  # 括号为账号
driver.find_element_by_id('p').send_keys('*******')  # 括号为密码
driver.find_element_by_id('p').send_keys(Keys.ENTER) # 按下ENTER键
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
整个也就10行代码,却大大地方便了我们的日常工作生活,从此我们再也不用担心忘记账号密码了,可以用极快的速度秒登各大网站,甚至当你需要回忆账号密码的时候只需要打开源代码便可知道了。 (如果遇到要输入验证码的网站,可能就无法实现全流程,但是自动打开网站并输入账号和密码还是能够实现的) 正如最开始所说,当然虽然代码很短,需要的前置知识也不少,除了懂得Python,还必须对selenium库、HTML和CSS、环境变量等有所了解才可以。