国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

教你怎么用python selenium實(shí)現(xiàn)自動(dòng)化測(cè)試

這篇具有很好參考價(jià)值的文章主要介紹了教你怎么用python selenium實(shí)現(xiàn)自動(dòng)化測(cè)試。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、安裝selenium

打開命令控制符輸入:pip install -U selenium

火狐瀏覽器安裝firebug:www.firebug.com,調(diào)試所有網(wǎng)站語言,調(diào)試功能

Selenium IDE 是嵌入到Firefox 瀏覽器中的一個(gè)插件,實(shí)現(xiàn)簡(jiǎn)單的瀏覽器操 作的錄制與回放功能,IDE 錄制的腳本可以可以轉(zhuǎn)換成多種語言,從而幫助我們快速的開發(fā)腳本,下載地址:Selenium IDE – Get this Extension for ?? Firefox (en-US)

如何使用IDE錄制腳本:點(diǎn)擊seleniumIDE——點(diǎn)擊錄制——開始錄制——錄制完成后點(diǎn)擊文件Export Test Case——python/unittest/Webdriver——保存;

二、安裝python

安裝的時(shí)候,推薦選擇“Add exe to path”,將會(huì)自動(dòng)添加Python的程序到環(huán)境變量中。然后可以在命令行輸入 python -V 檢測(cè)安裝的Python版本。

瀏覽器內(nèi)殼:IE、chrome、FireFox、Safari

1、webdriver:用unittest框架寫自動(dòng)化用例(setUp:前置條件,tearDown清場(chǎng))?

1

2

3

4

5

6

7

8

9

10

import unittest

from selenium import webdriver

??

class Ranzhi(unittest.TestCase):

??def setUp(self):

????self.driver = webdriver.Firefox() #選擇火狐瀏覽器

??def test_ranzhi(self):

????pass

??def tearDown(self):

????self.driver.quit()#退出瀏覽器

2、斷言,檢查跳轉(zhuǎn)的網(wǎng)頁(yè)是否和實(shí)際一致

斷言網(wǎng)址時(shí)需注意是否為偽靜態(tài)(PATH_INFO)或者GET,前者采用路徑傳參數(shù)(sys/user-creat.html),后者通過字符查詢傳參數(shù)(sys/index.php?m=user&f=index)

當(dāng)采用不同方式校驗(yàn)網(wǎng)址會(huì)發(fā)現(xiàn)變化。

1

2

self.assertEqual("http://localhost:8080/ranzhi/www/s/index.php?m=index&f=index",

????????self.driver.current_url, "登錄跳轉(zhuǎn)失敗")

教你怎么用python selenium實(shí)現(xiàn)自動(dòng)化測(cè)試,python,selenium,軟件測(cè)試,接口測(cè)試,自動(dòng)化測(cè)試,測(cè)試工程師

3、定位元素,在html里面,元素具有各種各樣的屬性。我們可以通過這樣唯一區(qū)別其他元素的屬性來定位到這個(gè)元素.

WebDriver提供了一系列的元素定位方法。常見的有以下幾種:id,name,link text,partial link text,xpath,css seletor,class,tag.

1

2

3

self.driver.find_element_by_xpath('//*[@id="s-menu-superadmin"]/button').click()

self.driver.find_element_by_id('account').send_keys('admin')

self.driver.find_element_by_link_text(u'退出').click()

定位元素需注意的問題:

a.時(shí)間不夠,采用兩種方式(self.implicitly_wait(30),sleep(2))

b.函數(shù)嵌套(<iframe></iframe>)

1

2

3

4

# 進(jìn)入嵌套

?self.driver.switch_to.frame('iframe-superadmin')

#退出嵌套

?self.driver.switch_to.default_content()

c.flash,驗(yàn)證碼(關(guān)閉驗(yàn)證碼或使用萬能碼)

d.xpath問題:最好采用最簡(jiǎn)xpath,當(dāng)xpath中出現(xiàn)li[10]等時(shí)需注意,有時(shí)頁(yè)面定位會(huì)出現(xiàn)問題

4、采用CSV存數(shù)據(jù)

CSV:以純文本形式存儲(chǔ)表格數(shù)據(jù)(數(shù)字和文本),CSV文件由任意數(shù)目的記錄組成,記錄間以某種換行符分隔;每條記錄由字段組成,字段間的分隔符是其它字符或字符串,最常見的是逗號(hào)或制表符。大量程序都支持某種CSV變體,至少是作為一種可選擇的輸入/輸出格式。

1

2

3

melody101,melody101,m,1,3,123456,@qq.com

melody102,melody101,f,2,5,123456,@qq.com

melody103,melody101,m,3,2,123456,@qq.com

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

import csv

# 讀取CSV文件到user_list字典類型變量中

user_list = csv.reader(open("list_to_user.csv", "r"))

# 遍歷整個(gè)user_list

for user in user_list:

??sleep(2)

??self.logn_in('admin', 'admin')

??sleep(2)

??# 讀取一行csv,并分別賦值到user_to_add 中

??user_to_add = {'account': user[0],

??????????'realname': user[1],

??????????'gender': user[2],

??????????'dept': user[3],

??????????'role': user[4],

???????????'password': user[5],

???????????'email': user[0] + user[6]}

???self.add_user(user_to_add)

5、對(duì)下拉列表的定位采用select標(biāo)簽

1

2

3

4

5

6

from selenium.webdriver.support.select import Select

# 選擇部門

dp =self.driver.find_element_by_id('dept')

Select(dp).select_by_index(user['dept'])

# 選擇角色

Select(self.driver.find_element_by_id('role')).select_by_index(user['role'])

6、模塊化代碼

需要對(duì)自動(dòng)化重復(fù)編寫的腳本進(jìn)行重構(gòu)(refactor),將重復(fù)的腳本抽取出來,放到指定的代碼文件中,作為共用的功能模塊。使用模塊化代碼注意需倒入該代碼。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#模塊化代碼后引用,需導(dǎo)入代碼模塊

from ranzhi_lib import RanzhiLib

self.lib = RanzhiLib(self.driver)

# 點(diǎn)擊后臺(tái)管理

self.lib.click_admin_app()

sleep(2)

# 點(diǎn)擊添加用戶

self.lib.click_add_user()

# 添加用戶

self.lib.add_user(user_to_add)

sleep(1)

# 退出

self.lib.logn_out()

sleep(2)

7、自定義函數(shù)運(yùn)行的先后順序:完整的單元測(cè)試很少只執(zhí)行一個(gè)測(cè)試用例,開發(fā)人員通常都需要編寫多個(gè)測(cè)試用例才能對(duì)某一軟件功能進(jìn)行比較完整的測(cè)試,這些相關(guān)的測(cè)試用例稱為一個(gè)測(cè)試用例集,在PyUnit中是用TestSuite類來表示,采用unittest.TestSuite()。

PyUnit使用TestRunner類作為測(cè)試用例的基本執(zhí)行環(huán)境,來驅(qū)動(dòng)整個(gè)單元測(cè)試過程。Python開發(fā)人員在進(jìn)行單元測(cè)試時(shí)一般不直接使用TestRunner類,而是使用其子類TextTestRunner來完成測(cè)試。

1

2

3

4

5

6

7

8

# 構(gòu)造測(cè)試集

suite = unittest.TestSuite()

suite.addTest(RanzhiTest("test_login"))

suite.addTest(RanzhiTest("test_ranzhi"))

???

# 執(zhí)行測(cè)試

runner = unittest.TextTestRunner()

runner.run(suite)

以下代碼為登錄“然之系統(tǒng)”,進(jìn)入添加用戶,循環(huán)添加用戶并檢測(cè)添加成功,再退出的過程。以下程序分別為主程序,模塊化程序,執(zhí)行程序,CSV文件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

import csv

import unittest

from time import sleep

??

from selenium import webdriver

# 模塊化代碼后引用需導(dǎo)入代碼模塊

from ranzhi_lib import RanzhiLib

??

??

class Ranzhi(unittest.TestCase):

??def setUp(self):

????self.driver = webdriver.Firefox()

????self.lib = RanzhiLib(self.driver)

??

??# 主函數(shù)

??def test_ranzhi(self):

????# 讀取CSV文件到user_list字典類型變量中

????user_list = csv.reader(open("list_to_user.csv", "r"))

????# 遍歷整個(gè)user_list

????for user in user_list:

??????sleep(2)

??????self.lib.logn_in('admin', 'admin')

??????sleep(2)

??????# 斷言

??????self.assertEqual("http://localhost:8080/ranzhi/www/sys/index.html",

???????????????self.driver.current_url,

???????????????'登錄跳轉(zhuǎn)失敗')

??????# 讀取一行csv,并分別賦值到user_to_add 中

??????user_to_add = {'account': user[0],

??????????????'realname': user[1],

??????????????'gender': user[2],

??????????????'dept': user[3],

??????????????'role': user[4],

??????????????'password': user[5],

??????????????'email': user[0] + user[6]}

??????# 點(diǎn)擊后臺(tái)管理

??????self.lib.click_admin_app()

??????# 進(jìn)入嵌套

??????self.lib.driver.switch_to.frame('iframe-superadmin')

??????sleep(2)

??????# 點(diǎn)擊添加用戶

??????self.lib.click_add_user()

??????# 添加用戶

??????self.lib.add_user(user_to_add)

??????# 退出嵌套

??????self.driver.switch_to.default_content()

??????sleep(1)

??????# 退出

??????self.lib.logn_out()

??????sleep(2)

??????# 用新賬號(hào)登錄

??????self.lib.logn_in(user_to_add['account'], user_to_add['password'])

??????sleep(2)

??????self.lib.logn_out()

??????sleep(2)

??

??def tearDown(self):

????self.driver.quit()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

from time import sleep

??

from selenium.webdriver.support.select import Select

??

??

class RanzhiLib():

??# 構(gòu)造方法

??def __init__(self, driver):

????self.driver = driver

??

??# 模塊化添加用戶

??def add_user(self, user):

????driver = self.driver

????# 添加用戶名

????ac = driver.find_element_by_id('account')

????ac.send_keys(user['account'])

????# 真實(shí)姓名

????rn = driver.find_element_by_id('realname')

????rn.clear()

????rn.send_keys(user['realname'])

????# 選擇性別

????if user['gender'] == 'm':

??????driver.find_element_by_id('gender2').click()

????elif user['gender'] == 'f':

??????driver.find_element_by_id('gender1').click()

????# 選擇部門

????dp = driver.find_element_by_id('dept')

????Select(dp).select_by_index(user['dept'])

????# 選擇角色

????role = driver.find_element_by_id('role')

????Select(role).select_by_index(user['role'])

????# 輸入密碼

????pwd1 = driver.find_element_by_id('password1')

????pwd1.clear()

????pwd1.send_keys(user['password'])

??

????pwd2 = driver.find_element_by_id('password2')

????pwd2.send_keys(user['password'])

????# 輸入郵箱

????em = driver.find_element_by_id('email')

????em.send_keys(user['email'])

????# 點(diǎn)擊保存

????driver.find_element_by_id('submit').click()

????sleep(2)

??

??# 登錄賬號(hào)

??def logn_in(self, name, password):

????driver = self.driver

????driver.get('http://localhost:8080/ranzhi/www')

????sleep(2)

??

????driver.find_element_by_id('account').clear()

????driver.find_element_by_id('account').send_keys(name)

????driver.find_element_by_id('password').clear()

????driver.find_element_by_id('password').send_keys(password)

????driver.find_element_by_id('submit').click()

????sleep(2)

??

??# 退出賬號(hào)

??def logn_out(self):

????self.driver.find_element_by_id('start').click()

????sleep(4)

????self.driver.find_element_by_link_text(u'退出').click()

????sleep(3)

??

??# 點(diǎn)擊后臺(tái)管理

??def click_admin_app(self):

????self.driver.find_element_by_xpath('//*[@id="s-menu-superadmin"]/button').click()

????sleep(1)

??

??def click_add_user(self):

????self.driver.find_element_by_xpath('//*[@id="shortcutBox"]/div/div[1]/div/a/h3').click()

????sleep(3)

1

2

3

4

5

6

7

8

9

10

11

12

import unittest

??

from ranzhi import Ranzhi

class RanzhiTestRunner():

??def run_tests(self):

????suite = unittest.TestSuite()

????suite.addTest(Ranzhi('test_ranzhi'))

????runner = unittest.TextTestRunner()

????runner.run(suite)

if __name__ == "__main__":

??ranzhi_test_runner = RanzhiTestRunner()

??ranzhi_test_runner.run_tests()

?現(xiàn)在我也找了很多測(cè)試的朋友,做了一個(gè)分享技術(shù)的交流群,共享了很多我們收集的技術(shù)文檔和視頻教程。
如果你不想再體驗(yàn)自學(xué)時(shí)找不到資源,沒人解答問題,堅(jiān)持幾天便放棄的感受
可以加入我們一起交流。而且還有很多在自動(dòng)化,性能,安全,測(cè)試開發(fā)等等方面有一定建樹的技術(shù)大牛
分享他們的經(jīng)驗(yàn),還會(huì)分享很多直播講座和技術(shù)沙龍
可以免費(fèi)學(xué)習(xí)!劃重點(diǎn)!開源的?。。?qq群號(hào):485187702【暗號(hào):csdn11】

最后感謝每一個(gè)認(rèn)真閱讀我文章的人,看著粉絲一路的上漲和關(guān)注,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走!?希望能幫助到你!【100%無套路免費(fèi)領(lǐng)取】

教你怎么用python selenium實(shí)現(xiàn)自動(dòng)化測(cè)試,python,selenium,軟件測(cè)試,接口測(cè)試,自動(dòng)化測(cè)試,測(cè)試工程師

教你怎么用python selenium實(shí)現(xiàn)自動(dòng)化測(cè)試,python,selenium,軟件測(cè)試,接口測(cè)試,自動(dòng)化測(cè)試,測(cè)試工程師文章來源地址http://www.zghlxwxcb.cn/news/detail-782147.html

到了這里,關(guān)于教你怎么用python selenium實(shí)現(xiàn)自動(dòng)化測(cè)試的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • python+selenium實(shí)現(xiàn)UI自動(dòng)化(一)

    python+selenium實(shí)現(xiàn)UI自動(dòng)化(一)

    selenium官方網(wǎng)站 selenium ide 錄制工具。 火狐/google/edge插件 selenium webdriver ? 結(jié)合代碼來編寫自動(dòng)化用例。提供很多在瀏覽器上的操作的api,本文主要記錄此項(xiàng)的學(xué)習(xí)過程 selenium grid ? 分布式。火狐/google/edge上同時(shí)運(yùn)行。把所有用例拆分到多設(shè)備上運(yùn)行,運(yùn)行效率更高,更快。

    2023年04月24日
    瀏覽(20)
  • Python利用Selenium實(shí)現(xiàn)自動(dòng)化驗(yàn)證登錄

    Python里面使用Selenium是一個(gè)很重要的自動(dòng)化測(cè)試模塊,我們可以用它寫一個(gè)驗(yàn)證登錄腳本,有了這個(gè)可以用來保存cookie信息等,下面是一個(gè)簡(jiǎn)單的demo:

    2024年02月15日
    瀏覽(22)
  • 擁抱自動(dòng)化測(cè)試,快速升職加薪丄Selenium+Pytest自動(dòng)化測(cè)試框架教你如何做到

    擁抱自動(dòng)化測(cè)試,快速升職加薪丄Selenium+Pytest自動(dòng)化測(cè)試框架教你如何做到

    引言 Selenium+Pytest自動(dòng)化測(cè)試框架是目前最流行的自動(dòng)化測(cè)試工具之一,其強(qiáng)大的功能和易用性援助許多開發(fā)人員和測(cè)試人員。 selenium自動(dòng)化+ pytest測(cè)試框架禪道實(shí)戰(zhàn) 選用的測(cè)試網(wǎng)址為我電腦本地搭建的禪道 conftest.py更改 config.ini更改 conf.py更改 page更改 page_element更改 page_obje

    2023年04月24日
    瀏覽(21)
  • 演唱會(huì)門票搶不到?不要慌,教你用python實(shí)現(xiàn)自動(dòng)化搶票

    演唱會(huì)門票搶不到?不要慌,教你用python實(shí)現(xiàn)自動(dòng)化搶票

    之前一直在更新從零開始學(xué)python系列的系列文,最近有點(diǎn)忙停更了兩天,今天來插一篇其他的文章。 之前有小伙伴留言說女朋友快生日了,喜歡某某某但是手動(dòng)買票根本就是買不到,又不想當(dāng)大冤種從黃牛手里加錢,于是乎在瘋狂星期四的晚上遭到’‘賄賂’\\\'的我連夜搞定

    2024年02月15日
    瀏覽(25)
  • jenkins+selenium+python實(shí)現(xiàn)web自動(dòng)化測(cè)試

    jenkins+selenium+python實(shí)現(xiàn)web自動(dòng)化測(cè)試

    jenkins+selenium可以做到對(duì)web自動(dòng)化的持續(xù)集成。 Jenkins的基本操作: 新建視圖: 新建job: 可以選擇構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目或者復(fù)制已有的item 安裝Jenkins插件, SSH plugin ,Email Extension Plugin , Hudson Seleniumhq plugin 點(diǎn)擊系統(tǒng)管理-管理插件 在可選插件面板Filter中輸入插件名,

    2024年02月02日
    瀏覽(23)
  • selenium python 實(shí)現(xiàn)基本自動(dòng)化測(cè)試的示例代碼

    selenium python 實(shí)現(xiàn)基本自動(dòng)化測(cè)試的示例代碼

    安裝selenium 打開命令控制符輸入:pip install -U selenium 火狐瀏覽器安裝firebug:www.firebug.com,調(diào)試所有網(wǎng)站語言,調(diào)試功能 Selenium IDE 是嵌入到Firefox 瀏覽器中的一個(gè)插件,實(shí)現(xiàn)簡(jiǎn)單的瀏覽器操 作的錄制與回放功能,IDE 錄制的腳本可以可以轉(zhuǎn)換成多種語言,從而幫助我們快速的開

    2024年02月02日
    瀏覽(37)
  • 使用Python+selenium實(shí)現(xiàn)第一個(gè)自動(dòng)化測(cè)試腳本

    這篇文章主要介紹了使用Python+selenium實(shí)現(xiàn)第一個(gè)自動(dòng)化測(cè)試腳本,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧 最近在學(xué)web自動(dòng)化,記錄一下學(xué)習(xí)過程。 此處我選用python3.6+selenium3.0,均用

    2024年02月03日
    瀏覽(25)
  • Python自動(dòng)化測(cè)試5大框架類型,你怎么Python實(shí)現(xiàn)自動(dòng)化測(cè)試?

    我們需要一個(gè)什么樣的框架 既然要搭一個(gè)框架,我們首先得弄明白我們需要一個(gè)什么樣的框架,這個(gè)框架要支持什么功能? 框架主要的作用就是幫助我們編寫更加簡(jiǎn)單而且好維護(hù)的用例,讓我們把主要精力放在測(cè)試用例的設(shè)計(jì)上,那么我們就需要把所有額外的東西抽象出來

    2024年02月06日
    瀏覽(24)
  • 基于python實(shí)現(xiàn)Web自動(dòng)化測(cè)試(selenium)、API自動(dòng)化測(cè)試(requests)&附學(xué)習(xí)視頻

    基于python實(shí)現(xiàn)Web自動(dòng)化測(cè)試(selenium)、API自動(dòng)化測(cè)試(requests)&附學(xué)習(xí)視頻

    另一篇文章 :自動(dòng)化測(cè)試框架(pytest)附學(xué)習(xí)視頻 學(xué)習(xí)視頻,學(xué)習(xí)文檔-白月黑羽 說明: 1緊跟著寫的不加/,不加空格-表示同一級(jí)別信息,加空格表示后代 2.css定位tag,id,class時(shí)分別有不同的標(biāo)識(shí),其他屬性都要加[]進(jìn)行搜索, Xpath所有屬性都要都加【】,tag不用 3. css在使用ta

    2024年02月03日
    瀏覽(24)
  • Python Selenium實(shí)現(xiàn)自動(dòng)化測(cè)試及Chrome驅(qū)動(dòng)使用

    Python Selenium實(shí)現(xiàn)自動(dòng)化測(cè)試及Chrome驅(qū)動(dòng)使用

    本文將介紹如何使用 Python ? Selenium 庫(kù)實(shí)現(xiàn) 自動(dòng)化測(cè)試 ,并詳細(xì) 記錄 了Chrome驅(qū)動(dòng)的使用方法。 通過本文的指導(dǎo),讀者將能夠快速上手使用Python Selenium進(jìn)行自動(dòng)化測(cè)試。 并了解如何配置和使用Chrome驅(qū)動(dòng)來實(shí)現(xiàn)更高效的自動(dòng)化測(cè)試。 一、Python Selenium簡(jiǎn)介 Python Selenium是一個(gè)用于

    2024年02月03日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包