1. 程式人生 > >python3.5+selenium3.4自動化測試3_下拉框迴圈選擇

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()

這裡寫圖片描述