from selenium import webdriver
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.firefox.options import Options
# Firefox 选项(可选:无头模式)
options = Options()
options.add_argument('--headless') # 如果不需要 UI 可打开
# 指定 GeckoDriver 路径
service = Service('geckodriver') # 替换为本机实际路径
driver = webdriver.Firefox(service=service, options=options)
driver.get('https://www.example.com')
print('页面标题(Firefox):', driver.title)
driver.quit()
Firefox 需要提前下载 GeckoDriver,并确保与本机 Firefox 版本匹配。
from selenium import webdriver
from selenium.webdriver.ie.service import Service
from selenium.webdriver.ie.options import Options
# IE 选项(建议开启保护模式一致、禁用弹窗等)
options = Options()
options.ignore_protected_mode_settings = True # 视具体环境而定
service = Service('IEDriverServer.exe') # 替换为实际路径
driver = webdriver.Ie(service=service, options=options)
driver.get('https://www.example.com')
print('页面标题(IE):', driver.title)
driver.quit()
IE 需要下载对应平台的 IEDriverServer,并在浏览器的“受保护模式”设置保持一致,否则会报错。
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless') # 无界面模式(可选)
service = Service('chromedriver') # 替换为本机 chromedriver 路径
driver = webdriver.Chrome(service=service, options=options)
driver.get('https://www.example.com') # 打开目标网址
# 按 ID
elem = driver.find_element_by_id('username')
# 按 name
elem = driver.find_element_by_name('password')
# 按 CSS selector
elem = driver.find_element_by_css_selector('.login-btn')
# 按 XPath
elem = driver.find_element_by_xpath('//div[@class="msg"]')
# 按标签名(返回列表)
elems = driver.find_elements_by_tag_name('a')
# 点击按钮
driver.find_element_by_id('submit').click()
# 输入文本
driver.find_element_by_name('search').send_keys('Selenium')
# 清空输入框
driver.find_element_by_name('search').clear()
elem = driver.find_element_by_id('logo')
src = elem.get_attribute('src') # 获取属性值
visible = elem.is_displayed() # 是否可见
enabled = elem.is_enabled() # 是否可用
selected = elem.is_selected() # 是否被选中
from selenium.webdriver.support.ui import Select
select_elem = driver.find_element_by_id('country')
select = Select(select_elem)
select.select_by_visible_text('China') # 按可见文本选择
select.select_by_value('CN') # 按 value 属性选择
select.deselect_all() # 取消所有选择(多选框)
driver.switch_to.frame('frame_id') # 进入 iframe(id、name 或索引)
# …在 iframe 内操作…
driver.switch_to.default_content() # 返回主文档
alert = driver.switch_to.alert() # 切换到弹窗
alert.accept() # 确认
# 或者 alert.dismiss() # 取消
# 同步执行
driver.execute_script("return document.title;")
# 异步执行(需要回调)
driver.execute_async_script("""
var callback = arguments[arguments.length - 1];
setTimeout(function(){ callback('done'); }, 2000);
""")
driver.implicitly_wait(10) # 最多等待 10 秒,直至元素出现
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 15)
elem = wait.until(EC.presence_of_element_located((By.ID, 'result')))
driver.save_screenshot('page.png') # 保存为 PNG 文件
png_data = driver.get_screenshot_as_png() # 返回 bytes
driver.close() # 关闭当前窗口
driver.quit() # 退出驱动并关闭所有窗口
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import Select, WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
options = Options()
options.add_argument('--headless')
service = Service('chromedriver')
driver = webdriver.Chrome(service=service, options=options)
driver.get('https://example.com/login')
driver.implicitly_wait(5)
# 输入用户名、密码并提交
driver.find_element_by_name('user').send_keys('admin')
driver.find_element_by_name('pwd').send_keys('123456')
driver.find_element_by_id('loginBtn').click()
# 等待登录成功后出现的欢迎信息
WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.ID, 'welcome'))
)
print(driver.find_element_by_id('welcome').text)
driver.quit()
以上内容展示了在 Chrome、Firefox、Internet Explorer 三种浏览器下的基本使用方式,涵盖了浏览器启动、元素定位、交互、等待、截图以及资源释放的完整流程。