selenium的基本使用

HelloJacker發表於2024-03-05

1. 基本使用
browser.current_url
browser.get_cookies()
browser.page_source

2. 定位元素

from selenium.webdriver.common.by import By
input_first = browser.find_element(by=By.ID, value='q')
input_first = browser.find_element(by=By.CSS_SELECTOR, value='#q')
input_first = browser.find_element(by=By.XPATH, value='//*[@id="q"]')
input_first = browser.find_element(by=By.CLASS_NAME, value='')
input_first = browser.find_element(by=By.LINK_TEXT, value='')
input_first = browser.find_element(by=By.PARTIAL_LINK_TEXT, value='')
input_first = browser.find_element(by=By.TAG_NAME, value='')

**3. **節點互動
send_keys
click
clear

4. 拖拽

source = browser.find_element(by=By.CSS_SELECTOR, value='.ui-droppable') # 定位拖拽位置
target = browser.find_element(by=By.CSS_SELECTOR, value='.ui-droppable') # 目標位置
actions = ActionChains(browser)
actions.drag_and_drop(source, target)
actions.perform() # 執行

5. js操作

browser.execute_script('window.scrollTo(0, document.body.scrollHeight)')# 捲軸
browser.execute_script('alert("To Bottom")')# 提示框

6. 獲取節點資訊

logo.get_attribute('')  # 獲取屬性值
input = browser.find_element(by=By.CLASS_NAME, value='logo-title')
input.text   # 獲取文字值
input.id# id
input.location# 相對位置
input.tag_name# 標籤名稱
input.size# 節點寬高

7. 切換子頁面

browser.switch_to.frame('')
browser.switch_to.parent_frame('')

8. 常見等待

顯式等待-等待節點

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import  expected_conditions as EC
from selenium.webdriver.common.by import By
browser.get('')
# 指定最長等待時間
wait = WebDriverWait(browser, 10)
# 傳入等待條件,等待節點出現
input = wait.until(EC.presence_of_element_located(By.ID, 'q'))
# 判斷按鈕是否可點選
buttion = wait.until(EC.element_to_be_clickable(By.CSS_SELECTOR, '.btn-search'))

隱式等待-等時間

browser.implicitly_wait(10)
  • 前進
    browser.forward()
  • 後退
    browser.back()

9. cookies

# 獲取所有Cookie
print(browser.get_cookies())
# 新增一個Cookie
browser.add_cookie({
    'name':'name',
    'domain':'',
    'value':'germey'
})
# 刪除所有Cookie
browser.delete_all_cookies()

10. 反爬
使用CDP

# 例項化物件
option = ChromeOptions()
# 開啟實驗性功能
option.add_experimental_option('excludeSwitches', ['enable-automation'])
# 隱藏正在受到自動軟體的控制
option.add_experimental_option('useAutomationExtension', False)
browser = webdriver.Chrome(options=option)
# 修改webdriver值
browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
    'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'
})
browser.get('https://antispider1.scrape.center')
browser.close()

11. 無頭

option.add_argument('--headless')
browser = webdriver.Chrome(options=option)
browser.set_window_size(1366, 768)

相關文章