自动化测试脚本-帐号注册到激活

Posted lengjf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化测试脚本-帐号注册到激活相关的知识,希望对你有一定的参考价值。

     

在https://www.oschina.net/(开源中国)网站使用邮箱注册,登录QQ邮箱激活注册帐号:

 

#coding=utf-8
from selenium import webdriver

#用谷歌浏览打开https://www.oschina.net/
drvier=webdriver.Chrome()
drvier.get(https://www.oschina.net/)

#浏览器在全屏幕模式下执行2
drvier.maximize_window()

#点击注册
drvier.find_element_by_xpath(/html/body/header/div/div[2]/div/a[2]).click()
#使用邮箱注册
drvier.find_element_by_xpath(/html/body/section/div/div/div[1]/nav/span[2]/span).click()
#输入邮箱
drvier.find_element_by_xpath(//*[@id="userMail"]).send_keys(‘******)
#输入昵称
drvier.find_element_by_xpath(//*[@id="mail_logon"]/div/div[2]/div[1]/input).send_keys(******)
#输入密码
drvier.find_element_by_xpath(//*[@id="mail_logon"]/div/div[3]/div[1]/input).send_keys(‘******)
#再次输入密码
drvier.find_element_by_xpath(//*[@id="mail_logon"]/div/div[4]/div[1]/input).send_keys(‘******)

#手动输入验证码
number=input(请输入验证码:)
drvier.find_element_by_xpath(//*[@id="mail_logon"]/div/div[5]/div[1]/input).send_keys(number)
#选择性别
drvier.find_element_by_xpath(//*[@id="mail_logon"]/div/div[6]/div/div[2]/label).click()
#同意协议
drvier.find_element_by_xpath(//*[@id="mail_logon"]/div/div[7]/div[1]/input).click()
#点击注册
drvier.find_element_by_xpath(//*[@id="mail_logon"]/div/div[8]/button).click()
#访问QQ邮箱 drvier.get(
https://mail.qq.com/) #切换到iframe(id=‘login_frame‘) drvier.switch_to.frame(login_frame)
#登录QQ邮箱激活开源中国社区 drvier.find_element_by_xpath(//*[@id="u"]).send_keys(******) drvier.find_element_by_xpath(//*[@id="p"]).send_keys(******) drvier.find_element_by_xpath(//*[@id="login_button"]).click() #切换到iframe(id=‘mainFrame‘) drvier.implicitly_wait(3) drvier.switch_to.frame(drvier.find_element_by_xpath(//*[@id="mainFrame"])) #点击收件箱 drvier.find_element_by_xpath(//*[@id="folder_1"]).click() #点击激活邮件 drvier.find_element_by_xpath(//*[@id="div_showtoday"]/table/tbody/tr/td[3]/table/tbody/tr/td[3]/div[1]/u).click() #获得激活链接窗口句柄 jh_windows=drvier.current_window_handle #点击激活链接 drvier.find_element_by_xpath(//*[@id="mailContentContainer"]/table/tbody/tr[3]/td/p[2]/a).click() #获得当前所有打开的窗口的句柄 all_handles = drvier.window_handles #获得继续访问窗口句柄 for handle in all_handles: if handle != jh_windows: drvier.switch_to.window(handle) #点击继续访问 drvier.find_element_by_xpath(/html/body/div/div[2]/div[2]/a[1]).click()

 问题一:刚开始在定位昵称、密码、验证码、性别、协议、注册元素时,提示:element not visible ,原因是由于页面上有两个结构类似的元素(用手机注册也有这些元素),因为这个定义对“手机注册”元素也同样适用,而且“手机注册”元素的位置在前面,所以就会出现element not visible。

解决方法:使用全路径的xpath(或者是往前定位,直到能区分出元素1和元素2)。 

问题二:在登录页面定位用户名和密码时,提示:NoSuchElementException: Message: Unable to locate element,原因是由于嵌套了iframe框架WebDriver 每次只能在一个页面上识别元素,对于iframe 嵌套内的页面上的元素,直接定位是定位是定位不到的。

解决方法:selenium提供了switch_to.frame()方法来切换frame,括号里的内容可以传入id、name、index以及selenium的WebElement对象。

通常采用id和name就能够解决绝大多数问题。但有时候frame并无这两项属性,则可以用index和WebElement来定位:

  • index从0开始,传入整型参数即判定为用index定位,传入str参数则判定为用id/name定位;
  • WebElement对象,即用find_element系列方法所取得的对象,我们可以用tag_name、xpath等来定位frame对象。

问题三:在用“find_element_by_class_name()”方法定位元素属性class="c-footer-a1 btn_blue"时,提示:invalid selector: Compound class names not permitted,原因是由于class属性存在空格,

解决方法:换成CSS 定位或者其他方式定位。

 问题四:在最后点击继续访问按钮时,提示:NoSuchElementException: Message: Unable to locate element,原因是由于没有定位到当前窗口。

解决方法:

  • current_window_handle  获得当前窗口句柄
  • window_handles   返回的所有窗口的句柄到当前会话
  • switch_to_window()   用于切换到相应的窗口,与上一节的switch_to_frame() 是类似,前者用于不同窗口的切换,后者用于不同表单之间的切换。

 

以上是关于自动化测试脚本-帐号注册到激活的主要内容,如果未能解决你的问题,请参考以下文章

Java注册帐号邮箱激活验证实现

PHP激活用户注册验证邮箱

转:java 帐号激活与忘记密码 实例

JavaMail学习笔记帐号激活与忘记密码 实例(zhuan)

微信应用号邀请码申请,小程序内测资格

;~ 小部分AutoHotkey源代码片段测试模板2019年10月9日.ahk