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)