一、元素操作方法
方法:
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、元素等待分類
隱式等待:針對全局元素生效;(講這個)
顯示等待:稍微麻煩,有興趣的可以下去了解,他是針對單個元素生效。
隱式等待方法: