selenium常用代碼

from selenium import webdriver

# 1. 添加瀏覽器設置參數對象
options = webdriver.ChromeOptions()

# 2. 設置中文,與下載無彈窗指定路徑
options.add_argument('lang=zh_CN.UTF-8')
prefs = { 'profile.default_content_settings.popups':0 ,'download.default_directory':'C:\\Users\\del'}
options.add_experimental_option('prefs',prefs)

# 3. 更換請求頭
options.add_argument('user-agent="Mozilla/5.0 (iPod; U; CPU iPhone OS 2_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F137 Safari/525.20"')

# 4. 生成瀏覽器對象
driver = webdriver.Chrome("無頭瀏覽器位置",chrome_options=options)
driver.get('鏈接')

# 5. 使用xpath定位元素與元素屬性
# 元素定位
元素 = driver.find_element_by_xpath('xpath表達式')
元素 = driver.find_element_by_link_text('文本鏈接')
元素 = driver.find_element_by_partial_link_text()('部分文本鏈接')
# 元素文本屬性值
元素.text
# 獲取元素屬性值
元素.get_attribute(屬性)
# 為True為元素可見
元素.is_displayed()
# 為True為元素可操作
元素.is_enabled()

# 6. 控制瀏覽器窗口大小,像素點寬480高800顯示
driver.set_window_size(480,800)

# 7. 前進(返回之前的網頁)與後退
driver.forward()
driver.back()

# 8. 模擬瀏覽器刷新當前頁面
driver.refresh()

# 9. 簡單元素操作:清除文本、模擬輸入、單擊元素
元素.clear()
元素.send_Keys('輸入的值')
元素.click()

# 10. 提交表單,例如輸入之後的回車操作
元素.submit()

# 11. 鼠標事件
# 導入提供數表操作的ActionChains類
from selenium.webdriver.common.action_chains import ActionChains
# 鼠標懸停
ActionChains(driver).move_to_element(元素).perform()
# 鼠標拖拽
ActionChains(driver).drag_and_drop(拖拽元素,目標元素).perform()
# 鼠標右擊
ActionChains(driver).context_click(元素).perform()
# 鼠標雙擊
ActionChains(driver).double_click(元素).perform()

# 12. 鍵盤事件
from selenium.webdriver.common.keys import Keys
元素.send_keys(Keys.F12)

# 13. 當前界面url
driver.current_url

# 14. 顯示等待:每隔一段時間檢測一次當前頁面元素是否存在,如果超過設置時間檢測不到則拋出異常
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions 

element = WebDriverWait(driver,最長超時時長,檢測的間隔時間默認0.5s).until(
                            expected_conditions.presence_of_element_located((By.ID,'kw'))
                            ) 
# 15. 隱式等待,操作沒有定位到元素則等待10s拋出異常
driver.implicitly_wait(10)

# 16.多表單切換:遇到frame或者iframe表單嵌套頁面,要定位內嵌頁面上的元素
driver.switch_to.frame(id或者name或者定位的frame元素)
#    跳出當前一級表單
driver.switch_to.parent_frame()
#    跳到最外層頁面
driver.switch_to.default_content()

# 17. 多窗口切換
driver.switch_to.window(driver.window_handles[0])

# 18. 警告框處理:接受警告框
driver.switch_to_alert().accept

# 19. 操作cookie
#     獲取cookie字典
driver.get_cookies()
#     獲取cookie值
driver.get_cookie(name)
#     寫入cookie
driver.add_cookie(cookie字典)
#     刪除cookie信息
driver.delete_cookie(name)
driver.delete_all_cookies()

# 20. 執行js
driver.execute_script(js)

# 21. 窗口截屏
driver.get_screenshot_as_file()

# 22. 關閉窗口
driver.close()

# 23. 退出:退出驅動以及關閉所有窗口
driver.quit()

# 24. 捕捉log
import logging
logging.basicConfig(level=logging.DEBUG)
Tags: