美文网首页python3+selenium3自动化测试程序员
python3.5+selenium3.4自动化测试3_下拉框循

python3.5+selenium3.4自动化测试3_下拉框循

作者: qingche46 | 来源:发表于2017-06-01 20:05 被阅读124次

    这边继续讲登陆和登出的界面,现在有越来越多的登陆界面设计中英文登陆界面,或多语言登陆界面,一般以下拉框的形式存在

    登陆语言选择.png

    对这个界面使用firebug-firepath查看

    firebug-firepath.png

    老规矩先上下代码

    # _*_ coding: utf-8 _*_
    import unittest,time,re
    from time import strftime, localtime
    from datetime import datetime
    
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support.ui import Select
    from selenium.common.exceptions import NoSuchAttributeException
    
    import HTMLTestRunner
    import mod_lang
    
    class LoginLang(unittest.TestCase):
        def setUp(self):
            self.driver=webdriver.Chrome()
            self.driver.implicitly_wait(30)
            self.base_url="http://192.168.1.131"
            self.verificationErrors=[]
            self.accept_next_alert=True
    
        def test_loginlangadmin(self):
            '''
            1.用户名填入admin,密码填入正确密码,语言循环选择,点击“Login”
            2.点击“Logout”登出,并检查提示语
            '''
            driver=self.driver
            driver.get(self.base_url+"/")
    
    
    
            try:
    
                driver.implicitly_wait(10) #智能等待10
    
                for Value,warm in mod_lang.Loginlang().items():
    
                    driver.find_element_by_id("username").send_keys("admin")
                    driver.find_element_by_id("secret").send_keys("password")
                    Select(driver.find_element_by_id('language')).select_by_value(Value)
                    driver.find_element_by_id("login_button").click()
                    time.sleep(3)
                    driver.switch_to_alert().accept()
                    driver.find_element_by_xpath(".//*[@id='nav']/ul/li[1]/a").click()
                    alert = driver.switch_to_alert().text
                    if warm==alert:
                        driver.switch_to_alert().accept()
                        time.sleep(3)#等待3
    
                    else:
                        driver.get_screenshot_as_file(u"D:/python/selenium/error_png/1.login/1.4/%s.png" % datetime.now().strftime("%Y%m%d.%H%M%S.%f")[:-3])
    
    
            except:
    
                driver.get_screenshot_as_file(u"D:/python/selenium/error_png/1.login/1.4/%s.png" % datetime.now().strftime("%Y%m%d.%H%M%S.%f")[:-3])
       
    
        def tearDown(self):
            time.sleep(3)
            self.driver.quit()
            self.assertEqual([],self.verificationErrors)
    if __name__=="__main__":
        suite=unittest.TestSuite()
        suite.addTest(LoginLang("test_loginlangadmin"))
        unittest.TextTestRunner().run(suite)
    
    

    下面是引用的函数,创建一个mod_lang.py

    # _*_ coding: utf-8 _*_
    
    
    def Loginlang():
        Language_Values={'en':'Are you sure you want to logout?',
                         'zh_CN':u'您确认要退出?',
                         'zh_TW': u'您確認要退出?'}
    
        return Language_Values
    

    1.这个函数主要涉及一个是语言选择,一个涉及到的是弹出窗口信息的验证,弹出的窗口信息验证主要是验证是否对应语言

    2.选择下拉框

    首先需要

    from selenium.webdriver.support.ui import Select
    

    如果你使用的是pycharm可以按住ctrl加鼠标点击Select,然后你就可以查看下select.py的文件,打开后我们可以看到里面的举例


    Paste_Image.png

    所以根据刚才firepath显示的


    firebug-firepath.png

    结合select.py文件中select_by_value() 方法,我们就写出下面的代码

    Select(driver.find_element_by_id('language')).select_by_value(Value)
    

    3.弹出窗口信息

    Paste_Image.png

    因为弹窗比较是一个具有唯一性的警告信息,所以可以用这种简便 的方法处理。
    获取弹出窗口的文本信息

    alert = driver.switch_to_alert().text
    

    把获取到得警告信息和我们正确的警告信息做对比,如果相同则接受这个信息用.accept()

    if warm==alert:
        driver.switch_to_alert().accept()
    
    -----------------------------------------------------分割线-----------------------------------------------------

    用实际用例代码长期更新,介绍selenium使用中的知识小点,希望大家关注,给予鼓励赞赏

    关注微信公众号:无敌轻车

    微信公众号.jpg

    相关文章

      网友评论

        本文标题:python3.5+selenium3.4自动化测试3_下拉框循

        本文链接:https://www.haomeiwen.com/subject/txuefxtx.html