自動化測試——selenium(完結篇)

一、元素操作方法

方法:

1、.send_keys()? # 輸入方法

2、.click()? # 點擊方法

3、.clear()? # 清空方法

1

2

3

4

注意:在輸入方法之前一定要清空操作!!

# 導包

from time import sleep

from selenium import webdriver

# 實例化瀏覽器

driver = webdriver.Chrome()

# 打開網址

driver.get('https://www.baidu.com/')

# 需求

ele = driver.find_element_by_css_selector('#kw')

ele.send_keys('易烊千璽')

sleep(2)

# 清空

ele.clear()

ele.send_keys('王嘉爾')

# 時間軸看效果

sleep(3)

# 關閉頁面

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

二、瀏覽器操作方法

常用的瀏覽器操作系統API

# 方法

"""

1、driver.maximize_window()? # 最大化瀏覽器

2、driver.set_window_size(w,h)? # 設置瀏覽器大小 單位像素 【了解】

3、driver.set_window_position(x,y)? # 設置瀏覽器位置? 【了解】

4、driver.back() # 后退操作

5、driver.forward() # 前進操作

6、driver.refrensh() # 刷新操作

7、driver.close() # 關閉當前主窗口(主窗口:默認啟動那個界面,就是主窗口)

8、driver.quit() # 關閉driver對象啟動的全部頁面

9、driver.title # 獲取當前頁面title信息

10、driver.current_url # 獲取當前頁面url信息

"""

1

2

3

4

5

6

7

8

9

10

11

12

13

"""

應用:driver.maximize_windows()? # 窗口最大化

driver.set_window_size(w,h) # 設置瀏覽器大小 【了解】

driver.set_window_position(x,y) # 設置瀏覽器窗口位置 【了解】

"""

from time import sleep

from selenium import webdriver

driver = webdriver.Chrome()

driver.get('https://www.baidu.com/')

# 窗口最大化

driver.maximize_window()

sleep(1)

# 設置瀏覽器寬,高 【了解】

driver.set_window_size(1000, 1000)

sleep(1)

# 設置窗口瀏覽器位置? 【了解】

driver.set_window_position(200, 200)

sleep(3)

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

"""

driver.back()

driver.forward()

driver.refresh()

"""

from time import sleep

from selenium import webdriver

driver = webdriver.Chrome()

driver.get('https://www.sogou.com/')

driver.find_element_by_css_selector('#query').send_keys('易烊千璽')

driver.find_element_by_id('stb').click()

sleep(2)

# 后退

driver.back()

sleep(2)

# 前進

driver.forward()

sleep(2)

# 刷新

driver.refresh()

sleep(3)

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

"""

driver.close() # 關閉當前主窗口,默認啟動的界面就是主窗口

driver.quit() # 關閉全部頁面

driver.title? # 獲取頁面標題

driver.current_url? # 獲取頁面地址

"""

from time import sleep

from selenium import webdriver

driver = webdriver.Chrome()

driver.get('https://www.sogou.com/')

driver.find_element_by_link_text('圖片').click()

# 這兩個屬性可以用來做斷言使用

print("當前頁面標題:", driver.title)

print("當前頁面的url:", driver.current_url)

# 這里關閉的是原始頁面,而不是新的頁面,只有完成頁面切換才可以關閉新的頁面

# 場景:關閉單個頁面使用

driver.close()

sleep(3)

# 關閉瀏覽器驅動對象的所有頁面

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

注意:driver.close() ,當前關閉的是主窗口,只有完成頁面切換才可以關閉當前新的頁面

提示:

1、driver.title 和 drivet.current_url是屬性沒有括號。應用場景:一般判斷上不操作是否執行成功。

2、driver.maximize_window() 一般為前置代碼放到獲取driver地址后,進行瀏覽器窗口的最大化

3、driver.refresh() 向瀏覽器重新發出請求,刷新頁面,在cookie 會用到

4、driver.close() 和 driver.quit() 的區別:

close():關閉當前主窗口

quit():關閉由driver對象啟動的所有頁面

如果只有一個窗口那么quit()和 close()沒有區別。

三、獲取元素信息操作

常用元素信息操作API

"""

方法:

1、text 獲取元素的文本; 如:driver.text

2、size 獲取元素的大小: 如:driver.size

3、get_attribute 獲取元素屬性值;如:driver.get_attribute("id") ,傳遞的參數是元素的屬性名

4、is_displayed 判斷元素是否可見 如:element.is_displayed()

5、is_enabled 判斷元素是否可用 如:element.is_enabled()

6、is_selected 判斷元素是否被選中 如:element.is_selected()

"""

1

2

3

4

5

6

7

8

9

10

"""

text? 獲取元素文本 ,沒有()

size? 獲取元素大小 ,沒有()

get_attribute("屬性名") 獲取的是屬性值

"""

from time import sleep

from selenium import webdriver

driver = webdriver.Chrome()

driver.get('https://www.sogou.com/')

ele = driver.find_element_by_id('query')

print("目標元素尺寸:", ele.size)

new_ele = driver.find_element_by_id('hanyu')

print("目標元素文本:", new_ele.text)

link = driver.find_element_by_link_text("圖片")

print("目標元素屬性值:", link.get_attribute('id'))

sleep(3)

# 關閉瀏覽器驅動對象的所有頁面

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

"""

is_displayed() 判斷元素是否可見,如:element.is_displayed

is_enabled() 判斷元素是否可用, 如:element.is_enabled

is_selected() 判斷元素是否被選中,如:element.is_selected

"""

from time import sleep

from selenium import webdriver

driver = webdriver.Chrome()

driver.get('file:///D:/%E6%A1%8C%E9%9D%A2/page/%E6%B3%A8%E5%86%8CA.html')

# 判斷元素是否可見,不可見并不代表不能定位

span = driver.find_element_by_name('sp1')

print("元素是否可見:", span.is_displayed())

btn = driver.find_element_by_id('cancelA')

print("元素是否可用:", btn.is_enabled())

check = driver.find_element_by_id('lia')

print("元素是否被選中:", check.is_selected())

sleep(3)

# 關閉瀏覽器驅動對象的所有頁面

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

注意:里面的返回的結果都是True 和 False。

四、鼠標操作 (需要實例化鼠標對象)

1、我們有了鼠標為什么還要使用鼠標操作??

為了滿足豐富的html鼠標效果,必須使用對應的方法。

2、鼠標時間對應的方法在那個類中?

ActionChains類,實例化 鼠標對象

導包:

from selenium.webdriver.common.action_chains import ActionChains

1

3、鼠標事件常用的操作 ☆

"""

1、context_click(element) # 右擊

2、double_click(element)? #雙擊

3、double_and_drop(source, target)? # 拖拽

4、move_to_element(element)? # 懸停 【重點】

5、perform()? # 執行以上事件的方法 【重點】

"""

1

2

3

4

5

6

7

4.1 鼠標右鍵及雙擊

"""

鼠標操作:

context_click() 右鍵

double_click() 鼠標雙擊

"""

from time import sleep

from selenium import webdriver

from selenium.webdriver import ActionChains

driver = webdriver.Chrome()

driver.get('https://www.baidu.com/')

# 定位目標

ele = driver.find_element_by_id('kw')

# 實例化 鼠標對象

action = ActionChains(driver)、

# 鼠標右鍵

action.context_click(ele)

# 鼠標雙擊

action.double_click(ele)

# 鼠標執行操作!!!不執行沒效果

action.perform()

sleep(3)

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

4.2 鼠標拖拽

"""

鼠標操作:

# 鼠標拖拽

action.drag_and_drop(source, target)

"""

from time import sleep

from selenium import webdriver

from selenium.webdriver import ActionChains

driver = webdriver.Chrome()

driver.get('file:///D:/%E6%A1%8C%E9%9D%A2/page/drag.html')

red = driver.find_element_by_xpath('//*[@id="div1"]')

blue = driver.find_element_by_xpath('//*[@id="div2"]')

# 實例化鼠標

action = ActionChains(driver)

# 鼠標拖拽

action.drag_and_drop(red, blue)

# 鼠標執行

action.perform()

sleep(3)

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

4.3 鼠標懸停 【重點】

"""

鼠標操作:

# 鼠標懸停 【重點】

action.move_to_element(element)

"""

from time import sleep

from selenium import webdriver

from selenium.webdriver import ActionChains

driver = webdriver.Chrome()

driver.get('https://www.baidu.com/')

driver.maximize_window()

ele = driver.find_element_by_id('s-usersetting-top')

# 實例化鼠標

action = ActionChains(driver)

# 鼠標懸停

action.move_to_element(ele)

# 鼠標執行

action.perform()

sleep(3)

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

注意: selenium 框架雖然提供了 鼠標右鍵方法,但是沒有提供選擇右鍵菜單方法,可以通過鍵盤快捷鍵操作實現

五、鍵盤操作(不需要實例化對象)☆

1、說明:鍵盤對應的方法在Keys類中

# 包

from selenium.webdriver.common.keys import Keys

1

2

2、快捷鍵(這里只講windows操作系統的快捷鍵):

CONTROL: Ctrl鍵

BACK_SPACE : 等價于 BACKSPACE (刪除)

其他:可以藏奧Keys底層的定義

3、應用

# 單鍵

element.send_keys(Keys.XXX)

# 組合鍵

element.send_keys(Keys.XXX, 'a') # 注意這里的組合鍵都是小寫

1

2

3

4

"""

鍵盤操作

"""

from time import sleep

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()

driver.get('https://www.baidu.com/')

ele = driver.find_element_by_id('kw')

ele.send_keys('易烊千璽')

sleep(1)

ele.send_keys(Keys.BACK_SPACE)

sleep(1)

# 組合鍵 Ctrl + a 全選 ,注意這里的組合鍵都是小寫

ele.send_keys(Keys.CONTROL, 'a')

sleep(1)

ele.send_keys(Keys.CONTROL, 'x')

sleep(1)

ele.send_keys(Keys.CONTROL, 'v')

sleep(3)

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

六、元素等待

1、為什么要設置元素等待

由于電腦配置或網絡原因,在查找元素時,元素代碼未在第一時間內被加載出來,而拋出未找到元素異常。

2、什么是元素等待

元素在第一次未找到時,元素等待設置的時長被激活,如果在設置的有效時長內找到元素,繼續執行代碼,如果超出設置的時長未找打元素,拋出未找到元素異常。

3、元素等待分類

隱式等待:針對全局元素生效;(講這個)

顯示等待:稍微麻煩,有興趣的可以下去了解,他是針對單個元素生效。

隱式等待方法:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。