基本函数
from selenium.webdriver import Chrome
driver = Chrome()
driver.get(url='') # GET请求打开网页
driver.close() # 关闭浏览器对象
driver.current_url # 当前页面URL
driver.page_source # 网页源代码
driver.get_screenshot_as_file(filename='') # 保存页面截图
cookie
driver.get_cookies() # Cookie
driver.add_cookie(cookie_dict={}) # 添加Cookie
driver.delete_all_cookies() # 删除Cookie
查找节点
from selenium.webdriver.common.by import By
element = driver.find_element(by=By.ID | ..., value='') # 查找第一个符合条件的元素
elements = driver.find_elements(by=By.ID | ..., value='') # 查找所有符合条件的元素
节点信息
element.is_displayed() # 元素可见
element.text # 元素内部的文本信息
element.id # 元素id
element.location # 元素在页面中的相对位置
element.tag_name # 标签名
element.size # 元素的大小(宽高)
element.get_attribute(name='') # ‘name’属性的值
对节点进行操作
element.clear() # 清空输入框
element.click() # 点击
from selenium.webdriver.common.keys import Keys
element.send_keys('value, str' | Keys.ENTER | ...) # 输入文字或执行操作
from selenium.webdriver import ActionChains
actions = ActionChains(driver=driver)
actions.drag_and_drop(source=element, target=element) # 鼠标拖拽
actions.perform() # 执行动作链
前进与后退
driver.forward() # 前进
driver.back() # 后退
等待
driver.implicitly_wait(time_to_wait='float') # 等待‘time_to_wait’后再查找DOM
from selenium.webdriver.support.wait import WebDriverWait
wait = WebDriverWait(driver=driver, timeout='float') # 指定最长等待时间为‘timeout’
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
web_element = EC.presence_of_element_located(locator=(By.ID | ..., '')) # 设置等待条件为元素出现
web_element = EC.element_to_be_clickable(mark=(By.ID | ..., '')) # 设置等待条件为元素可点击
web_element = EC.visibility_of_element_located(mark=(By.ID | ..., '')) # 设置等待条件为元素可见
wait.until(method=web_element) # 在规定时间内满足等待条件,就返回这个元素
切换父Frame与子Frame
driver.switch_to.frame(frame_reference='') # 切换到某个子Frame
driver.switch_to.parent_frame() # 切换到父Frame
运行JS
driver.execute_script(script='') # 模拟运行Javascript
标签页
driver.execute_script(script='window.open()') # 打开新标签页
driver.window_handles # 当前开启的所有标签页代号组成的列表
window = driver.window_handles['int'] # 第‘int+1’个标签页的代号
driver.switch_to.window(window_name=window) # 切换到某个标签页
自定义路径
from selenium.webdriver.chrome.service import Service
service = Service(executable_path='') # 自定义webdriver位置
driver = Chrome(service=service)
基础反屏蔽
from selenium.webdriver import ChromeOptions
option = ChromeOptions()
option.add_experimental_option(name='excludeSwitches', value=['enable-automation']) # 隐藏webdriver提示条
option.add_experimental_option('useAutomationExtension', False) # 隐藏自动化扩展信息
driver = Chrome(options=option)
cmd_javascript = 'Object.defineProperty(navigator, "webdriver", {get:()=>undefined})' # 将webdriver属性置空
driver.execute_cdp_cmd(cmd='Page.addScriptToEvaluateOnNewDocument', cmd_args={'source':cmd_javascript}) # 在页面刚加载的时候执行JavaScript语句
无头模式
from selenium.webdriver import ChromeOptions
option = ChromeOptions()
option.add_argument(argument='--headless') # 开启无头模式
driver = Chrome(options=option)
driver.set_window_size(width='int', height='int') # 设置窗口大小
无认证代理
from selenium.webdriver import ChromeOptions
option = ChromeOptions()
option.add_argument(argument='--proxy-server=http://'+'proxy, str') # 无认证代理
driver = Chrome(options=option)
定位器通过 By 对象进行选择的策略
from selenium.webdriver.common.by import By
By.ID # id属性
By.CSS_SELECTOR # CSS选择器
By.XPATH # XPath