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

来源:互联网 发布:巴洛克的艺术风格 知乎 编辑:程序博客网 时间:2024/06/15 11:06

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

IbuAutoScript.py

#!C:/Python27  #coding=utf-8from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support.select import Selectfrom selenium.common.exceptions import NoSuchElementExceptionfrom selenium.common.exceptions import NoAlertPresentExceptionfrom selenium.webdriver import ActionChainsimport unittest, time, re,randomclass 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()

原创粉丝点击