1. 程式人生 > 程式設計 >python+Selenium自動化測試——輸入,點選操作

python+Selenium自動化測試——輸入,點選操作

這是我的第一個真正意思上的自動化指令碼。

1、練習的測試用例為:

開啟百度首頁,搜尋“胡歌”,然後檢索列表,有無“胡歌的新浪微博”這個連結 2、在寫指令碼之前,需要明確測試的步驟,具體到每個步驟需要做什麼,既拆分測試場景,考慮好之後,再去寫指令碼。

此測試場景拆分如下:

1)啟動Chrome瀏覽器

2)開啟百度首頁,https://www.baidu.com

3)定位搜尋輸入框,輸入框元素XPath表示式://*[@id=”kw”]

4)定位搜尋提交按鈕(百度一下)://*[@id=”su”]

5)在搜尋框輸入“胡歌”,點選百度一下按鈕

6)在搜尋結果列表判斷是否存在“胡歌的新浪微博”這個連結

7)退出瀏覽器,結束測試

【注】chrome獲取XPath路徑步驟如下:

1)在你開啟的網頁(如:百度首頁),按F12,彈出如下視窗

python+Selenium自動化測試——輸入,點選操作

2)點選左上角箭頭按鈕(或Ctrl + Shift + C),此時可以在頁面上移動游標,檢視對應的程式碼,如移動到百度搜索框,顯示如下:

python+Selenium自動化測試——輸入,點選操作

點選一下,對應程式碼就會選中

python+Selenium自動化測試——輸入,點選操作

然後,右擊copy–>copy path 複製到XPath路徑。

3、程式碼如下:

import time
from selenium import webdriver

'''
測試用例:開啟百度首頁,搜尋“胡歌”,然後檢索列表,有無“胡歌的新浪微博”這個連結
場景拆分:
 1)啟動Chrome瀏覽器
 2) 開啟百度首頁,https://www.baidu.com
 3)定位搜尋輸入框,輸入框元素XPath表示式://*[@id="kw"]
 4)定位搜尋提交按鈕(百度一下)://*[@id="su"]
 5)在搜尋框輸入“胡歌”,點選百度一下按鈕
 6)在搜尋結果列表判斷是否存在“胡歌的新浪微博”這個連結
 7)退出瀏覽器,結束測試
'''
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(8) # 設定隱式等待時間

driver.get("https://www.baidu.com") # 位址列裡輸入網址
driver.find_element_by_xpath('//*[@id="kw"]').send_keys("胡歌") # 搜尋框輸入胡歌
driver.find_element_by_xpath('//*[@id="su"]').click() # 點選百度一下按鈕

time.sleep(2) # 等待2秒
# 通過元素XPath來確定該元素是否顯示在結果列表,從而判斷“桌布”這個連結是否顯示在結果列表
# find_element_by_link_text當找不到此連結時報錯,程式停止
driver.find_element_by_link_text('胡歌的新浪微博').is_displayed()
driver.quit()

補充知識:python + selenium自動化測試--頁面操作

1、重新整理當前頁面

.refresh()

# 重新整理當前頁面
driver.refresh()

2、獲取本頁面的URL

.current_url

用處:

一般URL可以幫助我們判斷跳轉的頁面是否正確,或者URL中部分欄位可以作為我們自動化測試指令碼期待結果的一部分。

print(driver.current_url)

3、頁面標題

獲取當前頁面標題

.title

# 獲取當前頁面標題顯示的欄位
print(driver.title)

斷言頁面標題

# 1) 包含判斷
# assert:斷言,聲稱
try:
 assert "百度一下" in driver.title
 print("斷言測試成功.")
except Exception as e:
 print("斷言失敗.",format(e))

# 2) 完全相等判斷
if "百度一下,你就知道" == driver.title:
 print("成功.")
else:
 print("失敗.")

print(driver.title)

4、新建標籤頁

用js實現如下:

try:
 # 新標籤頁,此處用js實現,在有些部落格上顯示使用
 # driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL,'t')
 # 我這測試無效,原因不知,於是採用如下方法
 js = "window.open('http://www.acfun.cn/')"
 driver.execute_script(js)

 # 切換到新的視窗
 handles = driver.window_handles # 獲取視窗控制代碼
 driver.switch_to.window(handles[-1]) # 切換到最後一個既最新開啟的視窗

 # 先切換視窗再開啟新網址,才是在新視窗開啟網址,不然還是在原來的百度頁面開啟此網址
 driver.get('http://map.baidu.com/')

except Exception as e:
 print("發現異常,",format(e))

5、頁面前進、後退

前進: .forward()

後退: .back()

driver.get("https://www.baidu.com")
time.sleep(2)
'''前進,後退'''
elem_news = driver.find_element_by_link_text("新聞").click() # 點選進入新聞
time.sleep(2)
driver.back() # 後退到百度首頁
time.sleep(2)
driver.forward() # 從百度前進到新聞頁
time.sleep(2)

6、獲取瀏覽器版本號

.capabilities[‘version']

# 獲取瀏覽器版本號
"""
 Creates a new session with the desired capabilities.

 :Args:
 - browser_name - The name of the browser to request.
 - version - Which browser version to request.
 - platform - Which platform to request the browser on.
 - javascript_enabled - Whether the new session should support JavaScript.
 - browser_profile - A selenium.webdriver.firefox.firefox_profile.FirefoxProfile object. Only used if Firefox is requested.
"""
print(driver.capabilities['version'])

以上這篇python+Selenium自動化測試——輸入,點選操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。