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

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

登陆语言选择.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()

这里写图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无敌轻车

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值