Python+Selenium注册登录各个功能流程验证脚本

1、今天写的脚本记录下:

IbuAutoScript.py

#!C:/Python27  
#coding=utf-8


from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
from selenium.webdriver import ActionChains
import unittest, time, re,random

class Aaa(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(30)
        self.base_url = "http://intl.sit.xxx.com:8980"
        self.verificationErrors = []
        self.accept_next_alert = True
    
    def test_aaa(self):
        driver = self.driver
        driver.get(self.base_url + "/")
        driver.maximize_window() # 浏览器全屏显示
        driver.find_element_by_link_text(u"登录").click()
        time.sleep(2)
        driver.find_element_by_id("loginname").clear()
        driver.find_element_by_id("loginname").send_keys("a.123456")
        driver.find_element_by_id("mmPwd").clear()
        driver.find_element_by_id("mmPwd").send_keys("s.123456")
        time.sleep(2)
        input_user = driver.find_element_by_tag_name('input').get_attribute('value')
        driver.find_element_by_xpath("//*[@id='lgoinForm']/div[2]/a").click()
        print u"\n0.0、登录成功,即将执行自动化功能测试用例..."
        #校验数据是否登录;
        
        print u"\n\t0.1、输入的用户名:",input_user
        
        time.sleep(1)
        try:

            driver.find_element_by_xpath("//*[@id='sf-top-right']/ul/li[3]/a").text == (input_user)
            
            user = driver.find_element_by_xpath("//*[@id='sf-top-right']/ul/li[3]/a").text
            
            print u"\n1、校验数据正确,登录成功的用户为:",user

        except Exception:
            
            driver.save_screenshot('E:\\pythonScript\\Script\\ERROR\\UserResult_1.png')
            
            print (u"\n1、校验登录用户_不正确,登录失败错误已截图保存")
        
        time.sleep(1)
        driver.find_element_by_xpath(u"(//a[contains(text(),'首页')])[2]").click()

        time.sleep(1)

        print u"\n2、进入首页,价格时效查询功能"

        driver.find_element_by_xpath("//*[@id='price_inquiry']/div[2]/form/fieldset/div[1]/div/span").click()

        driver.find_element_by_xpath("//*[@id='price_inquiry']/div[2]/form/fieldset/div[1]/div/div/div/div[2]/div[1]/dl[4]/dd/a[3]").click()
        #香港  
        print u"\n3、价格时效查询选择出发地"

        driver.find_element_by_xpath("//*[@id='price_inquiry']/div[2]/form/fieldset/div[2]/div/span/span[1]").click()

        driver.find_element_by_xpath("//*[@id='price_inquiry']/div[2]/form/fieldset/div[2]/div/div/div/div[2]/div[1]/dl[2]/dd/a[11]").click()
        #美国 //*[@id='price_inquiry']/div[2]/form/fieldset/div[2]/div/div/div/div[2]/div[1]/dl[2]/dd/a[11]
        
        print u"\n4、价格时效查询选择目的地"
        driver.find_element_by_id("weight").clear()
        driver.find_element_by_id("weight").send_keys("1")
        driver.find_element_by_css_selector("button.sf-cx-box-btn.btn").click()
        
        time.sleep(1)
        #校验数据是否正确;
        try:

            driver.find_element_by_xpath("//*[@id='dataList']/tr[1]/td[1]").text == (u"xxx")

            print u"\n5、校验数据正确,存在产品和服务名为:xxx"

        except Exception:
            
            driver.save_screenshot('E:\\pythonScript\\Script\\ERROR\\ErrorResult_1.png')
            
            print (u"\n5、校验查询结果_不正确,已截图保存")

        print (u"\n6、通过导航首页Link,进入首页页面")
        
        driver.find_element_by_xpath("/html/body/div[3]/ul/li[1]/a").click()
        driver.find_element_by_xpath("/html/body/div[3]/div[2]/a[2]/i").click()
        driver.find_element_by_id("orderNos").clear()
        driver.find_element_by_id("orderNos").send_keys("994732150921,994732146495")
        driver.find_element_by_css_selector("#waybill_inquiry > div.sf-cx-box > form > fieldset > div.sf-cx-box-btn > button.sf-cx-box-btn.btn").click()
        #获取验证码
        time.sleep(1)
        driver.find_element_by_id("verificationCode").clear()
        code = driver.find_element_by_xpath("//*[@id='randomNum']").text
        print u"\n7、获取到的验证码为:",code        
        driver.find_element_by_id("verificationCode").send_keys(code)
        print u"\n8、输入的验证码为:",code
        time.sleep(1)
        driver.find_element_by_link_text(u"查询").click()
        time.sleep(2)

        js_="window.scrollTo(100,600);"
        driver.execute_script(js_)
        print (u"\n9、已执行滚动条,下拉")
        
        try:
            
            driver.find_element_by_xpath("//*[@id='dataList']/div[1]/div[1]/div[4]/span").text == (994732146495)
            
            print u"\n10、校验数据正确,xxxxx返回数据正确"
            
        except:
            driver.save_screenshot('E:\\pythonScript\\Script\\ERROR\\IBSE_SF_number_1.png')
            
            print (u"\n10、校验查询结果_不正确,xxx返回数据不正确,已截图保存")

        try:
            
            driver.find_element_by_xpath("//*[@id='dataList']/div[2]/div[1]/div[2]/span").text == (994732150921)
            
            print u"\n11、校验数据正确,xxx返回数据正确"
            
        except:

            driver.save_screenshot('E:\\pythonScript\\Script\\ERROR\\SISP_SF_number_1.png')
            
            print (u"\n11、校验查询结果_不正确,xxx返回数据不正确,已截图保存")
            
        time.sleep(1)
        
        print u"\n12、进入首页,汇率查询功能"
        
        driver.find_element_by_xpath(u"(//a[contains(text(),'首页')])[2]").click()
        print u"\n13、点击汇率查询按钮"
        driver.find_element_by_xpath("/html/body/div[3]/div[2]/a[3]").click()

        element = self.driver.find_element_by_id("coin1")

        sel = Select(element)
        print u"\n14、选择币种为:人民币"
        sel.select_by_value("CNY")

        element = self.driver.find_element_by_id("coin2")
        sel = Select(element)
        print u"\n15、选择需要换算的币种为:美元"
        sel.select_by_value("USD")

        driver.find_element_by_xpath("//*[@id='exchangeRate_inquiry_form']/fieldset/div[5]/button").click()

        print u"\n16、执行汇率查询"
        
        try:
            
            driver.find_element_by_xpath("//*[@id='searchCoin']").text == (1)

            txt = driver.find_element_by_xpath("//*[@id='div1']/div/h3").text
                        
            print u"\n17、校验数据正确,汇率查询接口返回数据正确,查询结果数据为:",txt
            
        except:
            driver.save_screenshot('E:\\pythonScript\\Script\\ERROR\\Coin_1.png')
            
            print (u"\n17、校验查询结果_不正确,汇率查询接口返回数据不正确,已截图保存")        
        
        time.sleep(1)
        
        print u"\n18、进入首页,收送范围查询功能"

        time.sleep(1)
        
        driver.find_element_by_xpath(u"(//a[contains(text(),'首页')])[2]").click()

        print u"\n19、点击收送访问查询按钮,执行查询"
        driver.find_element_by_xpath("/html/body/div[3]/div[2]/a[5]").click()
        
        print u"\n20、选择收寄件区域、省、市、区"

        time.sleep(1)

        #driver.execute_script("alert('输入框标红了!')")
        #time.sleep(5)
        
        #接受提示信息   
        #driver.switch_to_alert().accept()

        #先定位到父节点,再从父节点找指定节点

        driver.find_element_by_xpath("//input[@id='cityAddress1']/following-sibling::span").click()
        
        time.sleep(1)
        
        driver.find_element_by_xpath("//input[@id='cityAddress1']/following-sibling::div[1]/div/div[2]/div[1]/dl/dd/a").click()#中国

        driver.find_element_by_xpath("//input[@id='cityAddress1']/following-sibling::div[1]/div/div[2]/div[2]/dl/dd/a[3]").click()#广东省

        driver.find_element_by_xpath("//input[@id='cityAddress1']/following-sibling::div[1]/div/div[2]/div[3]/dl/dd/a[3]").click()#深圳市

        driver.find_element_by_xpath("//input[@id='cityAddress1']/following-sibling::div[1]/div/div[2]/div[4]/dl/dd/a[5]").click()#南山区
        
        txt = driver.find_element_by_xpath("//input[@id='cityAddress1']/following-sibling::span/span[2]").text

        print u"\n21、选择收寄件区域为:",txt

        driver.find_element_by_xpath("//*[@id='range_inquiry']/div[2]/form/fieldset/div[2]/button").click()

        print u"\n22、点击查询按钮,执行查询"

        time.sleep(1)

        js_="window.scrollTo(100,600);"
        driver.execute_script(js_)
        
        try:
            
            driver.find_element_by_xpath("//*[@id='dataList']/li[1]").text == (u"南山街道")

            txt = driver.find_element_by_xpath("//*[@id='dataList']/li[1]").text
                        
            print u"\n23、校验数据正确,收寄件服务地区接口数据正确,查询数据存在网点为:",txt
            
        except:
            driver.save_screenshot('E:\\pythonScript\\Script\\ERROR\\Service_Center_1.png')
            
            print (u"\n23、校验查询结果_不正确,收寄件区域服务地区接口返回数据不正确,已截图保存")

        #driver.execute_script("alert('所有用例已执行完!')")
        #time.sleep(5)
        print u"\n24、进入首页,进出口规则查询功能"

        time.sleep(1)

        driver.find_element_by_xpath(u"(//a[contains(text(),'首页')])[2]").click()

        driver.find_element_by_xpath("/html/body/div[3]/div[2]/a[6]").click()

        element = self.driver.find_element_by_id("start0")

        sel = Select(element)
        
        sel.select_by_value("CN")
        
        print u"\n25、选择进出口始发国家为:中国"
        
        element = self.driver.find_element_by_id("end0")

        sel = Select(element)
        
        sel.select_by_value("KR")

        element = self.driver.find_element_by_id("sfxz0")

        sel = Select(element)
        
        sel.select_by_value("1")#公司
        
        driver.find_element_by_xpath("//*[@id='sbjz']").send_keys(200)

        driver.find_element_by_xpath("//*[@id='jjzl']").send_keys(20)#重量

        driver.find_element_by_xpath("//*[@id='wpmc']").send_keys(u"文件")

        print u"\n26、选择查询进出口目的地国家为:韩国"#,txt

        print u"\n27、点击查询按钮,执行查询"

        driver.find_element_by_xpath("//*[@id='Import_and_export']/div[2]/form/fieldset/div[8]/button").click()
        
        try:
            
            driver.find_element_by_xpath("//*[@id='dataList1']/tr[1]/td[1]").text == (1)#索引为1,则存在数据

            txt = driver.find_element_by_xpath("//*[@id='dataList1']/tr[1]").text
                        
            print u"\n28、校验数据正确,进出口规则接口返回始发国家数据正确,查询数据为:",txt
            
        except:
            driver.save_screenshot('E:\\pythonScript\\Script\\ERROR\\InPort_Center_1.png')
            
            print (u"\n28、校验数据不正确,进出口规则接口返回始发国家数据不正确,已截图保存")
        time.sleep(1)
        
        print u"\n29、点击目的地国家按钮,查看结果信息"
        driver.find_element_by_xpath("//*[@id='sf-q--tab']/li[2]/a").click()            
        
        try:
            
            driver.find_element_by_xpath("//*[@id='dataList2']/tr[1]/td[1]").text == (1)#索引为1,则存在数据

            txt = driver.find_element_by_xpath("//*[@id='dataList2']/tr[1]").text
                        
            print u"\n30、校验数据正确,进出口规则接口返回目的地国家数据正确,查询数据为:",txt
            
        except:
            driver.save_screenshot('E:\\pythonScript\\Script\\ERROR\\InPort_mddgj_1.png')
            
            print (u"\n30、校验数据不正确,进出口规则接口返回目的地国家数据不正确,已截图保存")        

        js_="window.scrollTo(100,600);"
        driver.execute_script(js_)

        time.sleep(1)

        js_="window.scrollTo(100,0);"
        driver.execute_script(js_)
        time.sleep(2)
        # 将鼠标移动到上面  
        article = driver.find_element_by_link_text(input_user)  
        ActionChains(driver).move_to_element(article).perform()
        time.sleep(2)
        menu = driver.find_element_by_link_text(u"退出")
        menu.click()
        time.sleep(2)
        driver.find_element_by_link_text(u"注册").click()
        #方法一
        seed = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ._-"
        sa = []
        for i in range(8):
            sa.append(random.choice(seed))
            salt = ''.join(sa)
        #方法二
        #salt = ''.join(random.sample(string.ascii_letters + string.digits, 8))
        print u"\n31、注册的用户名为:",salt
        
        driver.find_element_by_xpath("//*[@id='loginname']").send_keys(salt)

        driver.find_element_by_xpath("//*[@id='email']").send_keys(salt+"@qq.com")

        password = ("s.1"+salt)

        driver.find_element_by_xpath("//*[@id='mmPwd']").send_keys(password)

        driver.find_element_by_xpath("//*[@id='againPassword']").send_keys(password)

        print u"\n32、注册的用户密码为:",password
        
        seed = "0123456789"
        sa = []
        for i in range(11):
            sa.append(random.choice(seed))
            phone = ''.join(sa)
        print u"\n33、注册的手机号为:",phone            
        
        driver.find_element_by_xpath("//*[@id='phone']").send_keys(phone)

        code = driver.find_element_by_xpath("//*[@id='randomNum']").text

        driver.find_element_by_xpath("//*[@id='verificationCode']").send_keys(code)

        #os.system('pause')
        #raw_input()

        driver.find_element_by_xpath("//*[@id='_subbtn']").click()
        
        time.sleep(2)

        try:
            
            driver.find_element_by_xpath("//*[@id='toemail']").text == (u"请及时进入邮箱打开链接,完成操作")#索引为1,则存在数据

            tips = driver.find_element_by_xpath("//*[@id='toemail']").text
                        
            print u"\n34、注册成功,",tips
            
        except:
            driver.save_screenshot('E:\\pythonScript\\Script\\ERROR\\zhuce_error.png')
            
            print (u"\n34、注册失败,错误原因,已截图保存")    
        
    
    def is_element_present(self, how, what):
        try: self.driver.find_element(by=how, value=what)
        except NoSuchElementException as e: return False
        return True
    
    def is_alert_present(self):
        try: self.driver.switch_to_alert()
        except NoAlertPresentException as e: return False
        return True
    
    def close_alert_and_get_its_text(self):
        try:
            alert = self.driver.switch_to_alert()
            alert_text = alert.text
            if self.accept_next_alert:
                alert.accept()
            else:
                alert.dismiss()
            return alert_text
        finally: self.accept_next_alert = True

    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main()

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值