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)

posted on 2024-03-05 09:58  HelloJacker  阅读(9)  评论(0编辑  收藏  举报