selenium操作速查表(python)
目錄
selenium操作速查表(python)
創建瀏覽器對象
瀏覽器操作
操作cookies
隱式/顯式等待
概念
隱式等待--默認的時間是0
顯式等待--設定特定等待
定位dom元素
鼠標事件
鍵盤事件
截圖彈窗操作
創建瀏覽器對象
功能 |
代碼 |
---|
導包 |
from selenium import webdriver |
創建對象 |
driver=webdriver.Chrome() |
瀏覽器操作
功能 |
代碼 |
---|
瀏覽器打開網址url |
driver.get(url) |
瀏覽器最大化 |
driver.maximize_window() |
縮放瀏覽器爲800*480像素 |
driver.set_window_size(480, 800) |
瀏覽器後退 |
driver.back() |
瀏覽器前進 |
driver.forward() |
瀏覽器關閉 |
driver.close() |
瀏覽器退出 |
driver.quit() |
操作cookies
功能 |
代碼 |
---|
獲得所有cookie |
driver.get_cookies() |
獲得指定cookie |
driver.get_cookie(name) |
添加cookie |
driver.add_cookie(dict) |
刪除指定cookie |
driver.delete_cookie(name) |
刪除所有cookie |
driver.delete_all_cookies() |
隱式/顯式等待
概念
網上一查selenium的等待方式有三種,解釋很繁瑣,其中sleep()就不解釋了,是一個阻塞強制等待。
實際上隱式/顯式等待很簡單,前者全局適用,後者特定dom對象適用,理解起來就是這麼簡單,分情況使用即可。
- 隱式等待-設定全局等待===>一個driver打開到關閉的生命週期內所有的全局等待
- 顯式等待-設定特定等待===>特定DOM元素,即html的標籤對象,可以單獨設定等待
隱式等待--默認的時間是0
- 隱式等待相當於全局等待
- browser.implicitly_wait(10)
示例代碼:
browser = webdriver.Chrome()
# 等待十秒加載不出來就會拋出異常,10秒內加載出來正常返回
browser.implicitly_wait(10)
browser.get('https://www.zhihu.com/explore')
input = browser.find_element_by_class_name('class-login')
print(input)
顯式等待--設定特定等待
- 爲查找特定dom元素設定等待
- WebDriverWait(browser, 10)
示例代碼:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Chrome()
browser.get('https://www.taobao.com/')
# 等待十秒加載不出來就會拋出異常,10秒內加載出來正常返回
wait = WebDriverWait(browser, 10)
input = wait.until(EC.presence_of_element_located((By.ID, 'q')))
button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.btn-search')))
print(input, button)
定位dom元素
方法Method |
描述Description |
參數Argument |
示例Example |
---|
id |
該方法通過ID的屬性值去定位查找單個元素 |
id: 需要被查找的元素的ID |
find_element_by_id('search') |
name |
該方法通過name的屬性值去定位查找單個元素 |
name: 需要被查找的元素的名稱 |
find_element_by_name('q') |
class name |
該方法通過class的名稱值去定位查找單個元素 |
class_name: 需要被查找的元素的類名 |
find_element_by_class_name('input-text') |
tag_name |
該方法通過tag的名稱值去定位查找單個元素 |
tag: 需要被查找的元素的標籤名稱 |
find_element_by_tag_name('input') |
link_text |
該方法通過鏈接文字去定位查找單個元素 |
link_text: 需要被查找的元素的鏈接文字 |
find_element_by_link_text('Log In') |
partial_link_text |
該方法通過部分鏈接文字去定位查找單個元素 |
link_text: 需要被查找的元素的部分鏈接文字 |
find_element_by_partial_link_text('Long') |
xpath |
該方法通過XPath的值去定位查找單個元素 |
xpath: 需要被查找的元素的xpath |
find_element_by_xpath('//*[@id="xx"]/a') |
css_selector |
該方法通過CSS選擇器去定位查找單個元素 |
css_selector: 需要被查找的元素的ID |
find_element_by_css_selector('#search') |
鼠標事件
代碼 |
動作 |
---|
click() |
單擊 |
context_click() |
右擊 |
double_click() |
雙擊 |
drag_and_drop() |
拖拽 |
move_to_element() |
鼠標懸停在一個元素上 |
click_and_hold() |
按下鼠標左鍵在一個元素上 |
鍵盤事件
代碼 |
描述 |
---|
send_keys(Keys.BACKSPACE) |
刪除鍵(BackSpace) |
send_keys(Keys.SPACE) |
空格鍵(Space) |
send_keys(Keys.TAB) |
製表鍵(Tab) |
send_keys(Keys.ESCAPE) |
回退鍵(Esc) |
send_keys(Keys.ENTER) |
回車鍵(Enter) |
send_keys(Keys.CONTROL,'a') |
全選(Ctrl+A) |
send_keys(Keys.CONTROL,'c') |
複製(Ctrl+C) |
截圖彈窗操作
- 截圖的方法:save_screenshot(file_path)