Python+Selenium自动化测试——126邮箱自动登录脚本(登录首页是二维码,切入账号密码输入框)

Python+Selenium自动化测试——126邮箱自动登录脚本

版权声明:本文为博主原创文章,未经允许不得转载。https://blog.csdn.net/qiao_wan/article/details/94743908

网上很多基于Python利用第三方库Selenium进行126邮箱自动登录的测试脚本,但是在具体实现的过程中还是遇到了一些小问题,具体的实现及解决方法如下:

1、登录126邮箱首页查看操作流程

打开126邮箱登录首页,可以发现默认的登录方式是“手机扫码”方式。如果我们想要模拟通过 “账号 + 密码” 的方式自动登录,则首先需要点击“密码登录”文字,才可进入输入账号密码登录的界面,然后依次输入账号、密码、点击登录,则完成一次操作。

2、在浏览器中分别查看上述元素的前端代码

我们可以通过鼠标右击“密码登录”、“账号 ”、“ 密码” 的登录框,通过“web开发者工具”,查看上述元素的前端代码如下,截图如下:
1、查看“密码登录”按钮的前端代码:
Python+Selenium自动化测试——126邮箱自动登录脚本(登录首页是二维码,切入账号密码输入框)_第1张图片
Python+Selenium自动化测试——126邮箱自动登录脚本(登录首页是二维码,切入账号密码输入框)_第2张图片
2、查看“账号输入 ”框的前端实现代码,并定位查询其id、name等属性:
Python+Selenium自动化测试——126邮箱自动登录脚本(登录首页是二维码,切入账号密码输入框)_第3张图片
3、查看“密码输入 ”框的前端实现代码,并定位查询其id、name等属性:
Python+Selenium自动化测试——126邮箱自动登录脚本(登录首页是二维码,切入账号密码输入框)_第4张图片
4、查看“登录 ”按钮的前端实现代码,并定位查询其id、name等属性:
Python+Selenium自动化测试——126邮箱自动登录脚本(登录首页是二维码,切入账号密码输入框)_第5张图片
5、定位并查看iframe的结构内容:
Python+Selenium自动化测试——126邮箱自动登录脚本(登录首页是二维码,切入账号密码输入框)_第6张图片

3、编写基于Python+Selenium进行126邮箱自动登录的测试脚本

注意内容:在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况(报selenium.common.exceptions.NoSuchElementException),很常见的原因就是Frame/Iframe原因定位不到元素。
这个原因很常见,首先要理解下frame的实质,frame中实际上是嵌入了另一个页面,而 webdriver 每次只能在一个页面识别,因此需要先定位到相应的frame,对那个页面里的元素进行定位。
如果iframenameid的话,直接使用switch_to_frame("name值")switch_to_frame("id值") ,如果没有可用 id或者 name时,就需要通过其他的方法先定位到 iframe,再切换进去。
本例中,通过查看前端代码,通过driver.switch_to_frame("x-URS-iframe1562314804524.3333")直接定位到到iframe,发现报错,其原因是因为iframe的ID是动态生成的,所以用其他方法定位到改iframe(用其上一层父元素标签的唯一识别id/iframe来定位),即iframe = driver.find_element_by_xpath("//div[@id = 'loginDiv']/iframe")
Python实现代码如下:

#_*_ coding:utf-8_*_
#Author: Wanqiao
#Created Time:2019/7/5 15:04
#file:login126.py
from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get("http://www.126.com")
driver.find_element_by_id("switchAccountLogin").click()
time.sleep(1)
# 直接定位到对应的frame
#driver.switch_to_frame("x-URS-iframe1562314804524.3333")
#因为frame的ID是动态生成的,所以用其他方法定位到改iframe(其上一层唯一识别id/iframe)
iframe = driver.find_element_by_xpath("//div[@id = 'loginDiv']/iframe")
driver.switch_to_frame(iframe)
#执行登录操作
driver.find_element_by_name("email").clear()
driver.find_element_by_name("email").send_keys("emailName")
driver.find_element_by_name("password").clear()
driver.find_element_by_name("password").send_keys("passWord")
driver.find_element_by_id("dologin").click()

4、脚本运行成功

Python+Selenium自动化测试——126邮箱自动登录脚本(登录首页是二维码,切入账号密码输入框)_第7张图片

你可能感兴趣的:(Python,Selenium3)