zoukankan      html  css  js  c++  java
  • 自动化测试脚本-帐号注册到激活

         

    在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() 是类似,前者用于不同窗口的切换,后者用于不同表单之间的切换。
  • 相关阅读:
    SQL SEREVR IO
    INTEL
    windows performance
    The DiskSpd Storage Performance Tool
    machine Learning
    NOSQL
    X64 Deep Dive
    Debugging and performance,ETW
    Disk Performance
    WCF transport-and-message-security
  • 原文地址:https://www.cnblogs.com/lengjf/p/8158279.html
Copyright © 2011-2022 走看看