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)
12. 打勾
button1.send_keys(Keys.SPACE)