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

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

python3.5+selenium3.4自动化测试3_下拉框循环选择_第1张图片
登陆语言选择.png

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

python3.5+selenium3.4自动化测试3_下拉框循环选择_第2张图片
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的文件,打开后我们可以看到里面的举例


python3.5+selenium3.4自动化测试3_下拉框循环选择_第3张图片
Paste_Image.png

所以根据刚才firepath显示的


python3.5+selenium3.4自动化测试3_下拉框循环选择_第4张图片
firebug-firepath.png

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

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

3.弹出窗口信息

python3.5+selenium3.4自动化测试3_下拉框循环选择_第5张图片
Paste_Image.png

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

alert = driver.switch_to_alert().text

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

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

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

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

python3.5+selenium3.4自动化测试3_下拉框循环选择_第6张图片
微信公众号.jpg

你可能感兴趣的:(python3.5+selenium3.4自动化测试3_下拉框循环选择)