UI自動化測試(下拉框(select類),多窗口,屬性,類的方法實戰)


一、下拉框(select類實現的)

            在UI的自動化測試實戰中,如果遇到下拉框的選擇,我們可以使用Select類里面的方法來具體進行定位和解決。下面我們使用HTML的代碼來寫一個下拉框的頁面交互,讓大家從直觀上知道下拉框的交互:

  

如上是HTML的源代碼,下面具體看看交互的信息,如下所示:

 

 

 

二、下拉框實戰

1.select_by_index 索引的方式

 

select_by_index()的方法是通過索引的方式,如我們在上面的交互中,我們想選擇下拉框中的Go語言,它是在第三位,那么它的索引就是2,因為索引是從0開始,下面的代碼案例主要是以索引的方式來進行定位的,具體案例實戰代碼如下:

from selenium import webdriver from selenium.webdriver.support.select import Select import time as t driver=webdriver.Chrome() driver.maximize_window() driver.get('file:///Applications/code/testdev/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/index.html') t.sleep(2) nr=driver.find_element_by_id('nr') #針對Select進行實例化
select=Select(webelement=nr) #索引方式
select.select_by_index(2) t.sleep(3) driver.quit()

 

2.select_by_value

        select_by_value()方法是通過value的方式來進行定位,也就是標簽中option里面的value屬性來進行定位,比如我們還是Go語言,那么它的value的值就是“Go”,實戰代碼如下:

from selenium import webdriver from selenium.webdriver.support.select import Select import time as t driver=webdriver.Chrome() driver.maximize_window() driver.get('file:///Applications/code/testdev/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/index.html') t.sleep(2) nr=driver.find_element_by_id('nr') #針對Select進行實例化
select=Select(webelement=nr) #value的方式
select.select_by_value('Go') t.sleep(3) driver.quit()

 

3.select_by_visible_text

 

          select_by_text()的方法是通過文本信息來定位的,比如下拉框還是想選擇Go,那么它的文本信息其實就

是“Go語言”,見這部分的案例實戰代碼:

from selenium import webdriver from selenium.webdriver.support.select import Select import time as t driver=webdriver.Chrome() driver.maximize_window() driver.get('file:///Applications/code/testdev/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/index.html') t.sleep(2) nr=driver.find_element_by_id('nr') #針對Select進行實例化
select=Select(webelement=nr) #文本的方式
select.select_by_visible_text('Go語言') t.sleep(3) driver.quit()

 

4.拉勾網下拉框實戰

但是拉勾網比較特殊,比如我們想在拉勾網搜索測試開發工程師,並點擊學歷要求的下拉框,選擇本科,但我們發現,它的源代碼中本大專本科等這些並沒有寫在select中,這時我們可以使用xpath來進行定位,具體實現的代碼如下:

driver=webdriver.Chrome() driver.maximize_window() driver.get('https://www.lagou.com/') t.sleep(3) driver.find_element_by_id('search_input').send_keys('測試開發工程師') t.sleep(3) #點擊搜索按鈕
driver.find_element_by_id('search_button').click() t.sleep(3) #點擊學歷要求
driver.find_element_by_xpath('//*[@id="jobsContainer"]/div[2]/div[1]/div[1]/div[2]/div/ul/li[2]/div/span').click() t.sleep(3) #選擇本科
driver.find_element_by_xpath('//*[@id="jobsContainer"]/div[2]/div[1]/div[1]/div[2]/div/ul/li[2]/div/div/ul[2]/li[2]/span').click() t.sleep(3) driver.quit()

 

三、多窗口實戰

     實現從當前頁面切換到另外一個新的頁面,那么這個時候就需要使用到多窗口的操作和實戰。其實坦白說,多窗口更多值的是兩個窗口,如果是2個以上的窗口,是很難判斷的,因為缺少判斷的基准.

多窗口的解決步驟可以具體的描述為:

  • 先獲取當前窗口句柄
  • 然后點擊鏈接,打開一個新的窗口句柄
  • 然后獲取到所有的窗口句柄
  • 循環所有的窗口句柄,判斷如果不是當前窗口句柄,那么就切換到新的窗口句柄(如果當前的,就只能是新的窗口了)
  • 切換到新的窗口后,進行操作完成后,然后關閉新的窗口,再切換到當前窗口句柄

比如我們在百度首頁,又打開了hao123頁面,這時我們打開了兩個窗口,我們想要對他們分別進行操作,用如下代碼實現:

from selenium import webdriver import time as t driver=webdriver.Chrome() #首先打開百度
driver.get('http://www.baidu.com/') #獲取當前窗口(百度)
nowHandle=driver.current_window_handle t.sleep(3) #打開hao123的窗口
driver.find_element_by_partial_link_text('hao').click() t.sleep(3) #獲取所有的窗口 (百度和hao123)
allHandles=driver.window_handles t.sleep(3) for item in allHandles: #循環所有的窗口,我們把它賦item if item!=nowHandle:  #如果item不是百度的頁面,就是hao123
        driver.switch_to.window(item) #切換到hao123
        t.sleep(3) driver.find_element_by_xpath('//*[@id="search"]/form/div[2]/input').send_keys('hao123') t.sleep(3) driver.close() driver.switch_to.window(nowHandle) #切換到百度頁面
t.sleep(3) driver.find_element_by_id('kw').send_keys('百度') t.sleep(3) driver.quit()

四、webdriver瀏覽器屬性

        在WebDriver的測試框架中,WebDriver的類里面提供了很多的方法來專門針對瀏覽器的操作,這些方法都是在WebDriver的類里面,如測試被測試的瀏覽器地址,獲取被測試的瀏覽器名稱。下面針對這部分結合具體的案例實戰來說明這些的案例應用實戰。

1.獲取測試的地址

from selenium import webdriver driver=webdriver.Chrome() '''獲取測試的地址''' driver.get('http://www.baidu.com') driver.find_element_by_partial_link_text('hao').click() #斷言
assert driver.current_url.endswith('hao123.com/')==True #斷言測試的地址是不是以'hao123.com/'結尾如果是返回True 如果不是返回False
driver.close()

2.獲取當前頁面代碼

from selenium import webdriver driver=webdriver.Chrome() driver.get('http://www.baidu.com') print('獲取網頁的源代碼: ',driver.page_source) driver.quit()

3.獲取當前的Title

    獲取瀏覽器的title其實很簡單的,比如百度的title它就是“百度一下,你就知道”,那么下面針對這部分進行具體的驗證

from selenium import webdriver
driver=webdriver.Chrome()
driver.maximize_window() driver.get(
'http://www.baidu.com') assert driver.title=='百度一下,你就知道' driver.close()

4.前進和后退

from selenium import webdriver driver=webdriver.Chrome()
driver.maximize_window()
'''前進和后退''' import time as t driver=webdriver.Chrome() driver.get('http://www.baidu.com') t.sleep(3) driver.get('http://www.bing.com') t.sleep(3)
#后退 driver.back()
print('地址為:',driver.current_url) t.sleep(3)
#前進 driver.forward()
print('地址為:',driver.current_url) t.sleep(3)

5.刷新頁面

from selenium import webdriver
import time as t
driver=webdriver.Chrome()
driver.find_element_by_id('sb_form_q').send_keys('python')
t.sleep(3)
driver.refresh()
t.sleep(3)
driver.close()

 

五、類的方法實戰

在UI自動化測試中,WebElement的類里面提供了很多的方法可以進行調用,比如進行具體的清空的操作,和

獲取一個文本輸入框里面輸入的關鍵字的信息。下面詳細的演示下這部分的具體應用和案例實戰。

1.clear()清空

from selenium import webdriver
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
so=driver.find_element_by_id('kw')
so.send_keys('asdfgh')
t.sleep(3)
#清空文本框內輸入的信息
so.clear()
t.sleep(3)
driver.quit()

2.get_attribute():獲取元素屬性的值

from selenium import webdriver import time as t driver=webdriver.Chrome() driver.maximize_window() driver.get('http://www.lagou.com') t.sleep(3) driver.find_element_by_link_text('登錄').click() t.sleep(3) login=driver.find_element_by_xpath('/html/body/div[3]/div[1]/div/div/div[2]/div[3]/div[1]/div/div[2]/form/div[1]/div/input') print(login.get_attribute('placeholder')) t.sleep(3) driver.quit()

3.所有的input里面輸入的值,都是在value的屬性

 

from selenium import webdriver import time as t driver=webdriver.Chrome() driver.maximize_window() driver.get('https://www.baidu.com/') so=driver.find_element_by_id('kw') so.send_keys('admin') print(so.get_attribute('value')) driver.quit()

 

4.is_displayed()是否可見

from selenium import webdriver import time as t driver=webdriver.Chrome() driver.maximize_window() driver.get('https://www.baidu.com/') aboutBaidu=driver.find_element_by_link_text('關於百度') print(aboutBaidu.is_displayed()) driver.quit()

5.is_enabled():是否可編輯

from selenium import webdriver import time as t driver=webdriver.Chrome() driver.maximize_window() driver.get('https://www.baidu.com/') so=driver.find_element_by_id('kw') #is_enabled():是否可編輯
print(so.is_enabled()) driver.quit()

 

6.is_selected()針對單選按鈕是否勾選

from selenium import webdriver import time as t driver=webdriver.Chrome() driver.maximize_window() driver.get('https://mail.sina.com.cn/#') autoLogin=driver.find_element_by_id('store1') t.sleep(3) print('是否勾選:',autoLogin.is_selected())#默認勾選,所以為真
t.sleep(3) autoLogin.click() #取消勾選自動登錄
t.sleep(3) print('是否勾選:',autoLogin.is_selected()) driver.quit()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM