日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python webui测试ie浏览器环境配置_python+selenium做ui自动化测试用法必会

發(fā)布時間:2024/8/23 python 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python webui测试ie浏览器环境配置_python+selenium做ui自动化测试用法必会 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、前言

大家都知道,基于Web端的測試的基礎(chǔ)框架是需要Selenium做主要支撐的,這里邊給大家介紹下Web測試核心之基于 Python 的 Selenium

Selenium 是用于測試 Web 應(yīng)用程序用戶界面 (UI) 的常用框架。它是一款用于運行端到端功能測試的超強工具。您可以使用多個編程語言編寫測試,并且 Selenium 能夠在一個或多個瀏覽器中執(zhí)行這些測試。

二、環(huán)境安裝

安裝 python,這個。。。忽略,建議 python3.7。

安裝基于 python 的 selenium 依賴包,命令:pip install selenium

安裝瀏覽器驅(qū)動包,推薦使用 chrome 瀏覽器的chromedriver.exe,對應(yīng) chrome 版本一定要對哦,不然運行不起來的,安裝在哪?想放哪放哪,不過一般是放在 python 的根目錄下。下載地址:chromedriver.storage.googleapis.com/index.html

安裝 PyCharm ,這個無腦安裝~然后可自定義界面 UI 及編碼風(fēng)格,這個。。。忽略

三、牛刀小試

1. 控制瀏覽器

#coding=utf-8

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("http://www.baidu.com")

driver.maximize_window() #將瀏覽器最大化顯示

driver.set_window_size(480, 800) #設(shè)置瀏覽器寬480、高800顯示"

driver.back() #后退

driver.forward() #前進

driver.close() #關(guān)閉chrome

driver.quit() # 退出chrome

如果你對軟件測試、接口測試、自動化測試、面試經(jīng)驗交流感興趣歡迎加入:軟件測試技術(shù)群:603401995,群里的免費資料都是筆者十多年測試生涯的精華。還有同行大神一起交流技術(shù)哦。

2. 對象的定位

通過 id 定位:find_element_by_id()

通過 name 定位:find_element_by_name()

通過 class 定位:find_element_by_class_name()

通過 tag 定位:find_element_by_tag_name()

通過 link 定位:find_element_by_link_text()

通過 partial_link 定位:find_element_by_partial_link_text()

通過 xpath 定位:find_element_by_xpath()

通過 css 定位:find_element_by_css_selector()

以上幾種定位是常規(guī)操作,應(yīng)該就基本夠用了,但是有的時候就是會出現(xiàn)一些詭異的定位失效或者定位到了點擊失效的問題,這個時候如果用js進行直接執(zhí)行該事件,接下來介紹下非常規(guī)操作:

id 定位:document.getElementById()

name 定位:document.getElementsByName()

tag 定位:document.getElementsByTagName()

class 定位:document.getElementsByClassName()

css 定位:document.querySelectorAll()

search_js = "document.getElementsByName('wd')[0].value='selenium';"# 通過name定位,然后賦值“selenium”

search_js2 = "document.querySelectorAll('.s_ipt')[0].value='selenium';"# 通過css定位,然后賦值“selenium”

button_js = "document.getElementById('su').click();"# 通過id定位,然后執(zhí)行單擊操作

button_js2 = "document.getElementsByClassName('s_btn')[0].click()"# 通過className定位,然后執(zhí)行單擊操作 driver.execute_script(search_js2)#執(zhí)行,execute_script(script, *args)

以上幾種定位是可以再度升級,可以利用 jQuery 定位一波

3. 操作測試對象

#coding=utf-8

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("http://passport.kuaibo.com/login/")

driver.find_element_by_id("user_name").clear() #清除輸入框的默認內(nèi)容

driver.find_element_by_id("user_name").send_keys("username")

driver.find_element_by_id("user_pwd").clear()

driver.find_element_by_id("user_pwd").send_keys("password") #輸入輸入框的內(nèi)容為“password”

driver.find_element_by_id("dl_an_submit").click() #通過 submit() 來提交操作

driver.find_element_by_id("dl_an_submit").submit()

size=driver.find_element_by_id("kw").size #返回百度輸入框的寬高 text=driver.find_element_by_id("cp").text #返回百度頁面底部備案信息

#返回元素的屬性值,可以是 id、name、type 或元素擁有的其它任意屬性

attribute=driver.find_element_by_id("kw").get_attribute('type') #返回元素的結(jié)果是否可見,返回結(jié)果為 True 或 False

result=driver.find_element_by_id("kw").is_displayed()

driver.quit() #退出

復(fù)制代碼

4. 鼠標鍵盤事件

from selenium import webdriver #引入 Keys 類包

from selenium.webdriver.common.keys import Keys #引入 ActionChains 類

from selenium.webdriver.common.action_chains import ActionChains

... #鼠標事件 #定位到要操作的元素

right =driver.find_element_by_xpath("xx") #對定位到的元素執(zhí)行鼠標右鍵操作

ActionChains(driver).context_click(right).perform() #對定位到的元素執(zhí)行鼠標雙擊操作

ActionChains(driver).double_click(right).perform() #對定位到的元素執(zhí)行鼠標移動到上面的操作

ActionChains(driver).move_to_element(right).perform() #對定位到的元素執(zhí)行鼠標左鍵按下的操作

ActionChains(driver).click_and_hold(right).perform() #定位元素的原位置

element = driver.find_element_by_name("xxx") #定位元素要移動到的目標位置

target = driver.find_element_by_name("xxx") #執(zhí)行元素的移動操作

ActionChains(driver).drag_and_drop(element, target).perform() #鍵盤事件 #刪除多輸入的一個 值

driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE) #輸入空格鍵+“教程”

driver.find_element_by_id("kw").send_keys(Keys.SPACE)

driver.find_element_by_id("kw").send_keys(u"教程") #ctrl+x 剪切輸入框內(nèi)容

driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x') #其余的鍵盤操作類似

5. 等待時間

#coding=utf-8

from selenium import webdriver #導(dǎo)入 WebDriverWait 包

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC #導(dǎo)入 time 包

import time

driver = webdriver.Chrome()

driver.get("http://www.baidu.com") #WebDriverWait()方法使用,顯示等待,WebDriverWait(driver,超時時長,調(diào)用頻率,忽略異常).until(可執(zhí)行方法,超時返回的信息),這里可以調(diào)用EC來實現(xiàn)可執(zhí)行方法

is_disappeared = WebDriverWait(driver, 30, 1, (ElementNotVisibleException)).until_not(lambda x: x.find_element_by_id(“kw”).is_displayed()) #until(method, message=’ ’),調(diào)用該方法提供的驅(qū)動程序作為一個參數(shù),直到返回值不為 False

element.send_keys("selenium") #添加智能等待,隱時等待

driver.implicitly_wait(30)

driver.find_element_by_id("su").click() #添加固定休眠時間,強制等待

time.sleep(5)

driver.quit()

6. 組對象定位及層級定位,呃,忽略

7. 多窗口處理

#coding=utf-8

from selenium import webdriver import time

driver = webdriver.Chrome()

driver.get("http://www.baidu.com/") #獲得當(dāng)前窗口

nowhandle=driver.current_window_handle #打開注冊新窗口

driver.find_element_by_name("tj_reg").click()

allhandles=driver.window_handles #循環(huán)判斷窗口是否為當(dāng)前窗口

for handle in allhandles: if handle != nowhandle:

driver.switch_to_window(handle) print 'now register window!'

#切換到郵箱注冊標簽

driver.find_element_by_id("mailRegTab").click()

time.sleep(5)

driver.close() #回到原先的窗口

driver.switch_to_window(nowhandle)

driver.find_element_by_id("kw").send_keys(u"注冊成功!")

time.sleep(3) #ifrome處理 #這里會自動識別id,name,如果沒有則可以將元素通過選擇器找到,然后輸入該元素即可

driver.switch_to_frame("f1")

element = driver.find_element_by_id("kw")

driver.switch_to_frame(element)

driver.quit()?

復(fù)制代碼

8. 提示窗口處理

#coding=utf-8

from selenium import webdriver import time

driver = webdriver.Chrome()

driver.get("http://www.baidu.com/") #點擊打開搜索設(shè)置

driver.find_element_by_name("tj_setting").click()

driver.find_element_by_id("SL_1").click() #點擊保存設(shè)置

driver.find_element_by_xpath("//div[@id='gxszButton']/input").click() #獲取網(wǎng)頁上的警告信息

alert=driver.switch_to_alert() #接收警告信息

alert.accept() #取消對話框(如果有的話)

alert.dismiss() #輸入值(如果有的話)

alert.send_keys(“xxx”)

9. 控制瀏覽器滾動條,這個運用之前提示的jq語句即可實現(xiàn)

10. cookie處理,主要用途在于處理驗證碼問題

#coding=utf-8

from selenium import webdriver import time

driver = webdriver.Chrome()

driver.get("http://www.youdao.com") #向 cookie 的 name 和 value 添加會話信息。

driver.add_cookie({'name':'key-aaaaaaa', 'value':'value-bbbb'}) #遍歷 cookies 中的 name 和 value 信息打印,當(dāng)然還有上面添加的信息

for cookie in driver.get_cookies(): print "%s -> %s" % (cookie['name'], cookie['value']) ##### 下面可以通過兩種方式刪除 cookie ##### # 刪除一個特定的 cookie

driver.delete_cookie("CookieName") # 刪除所有 cookie

driver.delete_all_cookies()

time.sleep(2)

driver.close()

復(fù)制代碼

四、小結(jié)

如果你對軟件測試、接口測試、自動化測試、面試經(jīng)驗交流感興趣歡迎加入:軟件測試技術(shù)群:603401995,群里的免費資料都是筆者十多年測試生涯的精華。還有同行大神一起交流技術(shù)哦。

在熟悉了selenium常見的API基本操作后,這里便可以開展實際測試用例的設(shè)計了,一個良好的自動化測試用例起碼符合一下五個條件:

1、一個腳本是一個完整的場景,從用戶登陸操作到用戶退出系統(tǒng)關(guān)閉瀏覽器。

2、一個腳本腳本只驗證一個功能點,不要試圖用戶登陸系統(tǒng)后把所有的功能都進行驗證再退出系統(tǒng)

3、盡量只做功能中正向邏輯的驗證,不要考慮太多逆向邏輯的驗證,逆向邏輯的情況很多(例如手 號輸錯有很多種情況),驗證一方面比較復(fù)雜,需要編寫大量的腳本,另一方面自動化腳本本身比較脆弱, 很多非正常的邏輯的驗證能力不強。(我們盡量遵循用戶正常使用原則編寫腳本即可)

4、腳本之間不要產(chǎn)生關(guān)聯(lián)性,也就是說編寫的每一個腳本都是獨立的,不能依賴或影響其他腳本。

5、如果對數(shù)據(jù)進行了修改,需要對數(shù)據(jù)進行還原。 6、在整個腳本中只對驗證點進行驗證,不要對整個腳本每一步都做驗證。

最后配合unittest或者testNG單元測試框架,實現(xiàn)分層、數(shù)據(jù)驅(qū)動、斷言、截圖、日志等全方位功能,得心應(yīng)手的開展自動化測試工作。

總結(jié)

以上是生活随笔為你收集整理的python webui测试ie浏览器环境配置_python+selenium做ui自动化测试用法必会的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。