> 技术文档 > Python Selenium 使用指南_python使用selenium时如何设置webdriver的参数?

Python Selenium 使用指南_python使用selenium时如何设置webdriver的参数?

Selenium 是一个用于自动化 Web 浏览器交互的强大工具,常用于网页测试、数据抓取和自动化任务。以下是 Python 中 Selenium 的详细使用说明。

安装 Selenium

首先需要安装 Selenium 库和浏览器驱动:

pip install selenium

然后下载对应浏览器的驱动:

  • Chrome: ChromeDriver

  • Firefox: GeckoDriver

  • Edge: EdgeDriver

将驱动放在系统 PATH 路径中,或指定驱动路径。

基本使用

启动浏览器

from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keys# 使用 Chrome 浏览器driver = webdriver.Chrome() # 或指定路径 webdriver.Chrome(\'/path/to/chromedriver\')# 使用 Firefox# driver = webdriver.Firefox()# 访问网页driver.get(\"https://www.google.com\")

常用操作

# 查找元素search_box = driver.find_element(By.NAME, \"q\") # 通过name属性查找# 输入内容search_box.send_keys(\"Python Selenium\")# 模拟按键search_box.send_keys(Keys.RETURN) # 回车# 点击元素button = driver.find_element(By.CSS_SELECTOR, \"input[type=\'submit\']\")button.click()# 获取元素属性print(button.get_attribute(\"value\"))# 获取文本内容print(driver.find_element(By.TAG_NAME, \"h1\").text)# 执行JavaScriptdriver.execute_script(\"window.scrollTo(0, document.body.scrollHeight);\")# 等待(隐式等待)driver.implicitly_wait(10) # 最多等待10秒# 显式等待from selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECelement = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, \"myDynamicElement\")))

选择元素的方式

# 通过IDdriver.find_element(By.ID, \"id_name\")# 通过name属性driver.find_element(By.NAME, \"name\")# 通过XPathdriver.find_element(By.XPATH, \"//input[@name=\'q\']\")# 通过链接文本driver.find_element(By.LINK_TEXT, \"Continue\")# 通过部分链接文本driver.find_element(By.PARTIAL_LINK_TEXT, \"Conti\")# 通过标签名driver.find_element(By.TAG_NAME, \"h1\")# 通过类名driver.find_element(By.CLASS_NAME, \"content\")# 通过CSS选择器driver.find_element(By.CSS_SELECTOR, \"p.content\")

高级功能

处理弹窗和警告

# 获取并接受alertalert = driver.switch_to.alertprint(alert.text)alert.accept()# 取消alertalert.dismiss()# 在prompt中输入文本alert.send_keys(\"text\")alert.accept()

切换窗口和iframe

# 获取当前所有窗口句柄all_handles = driver.window_handles# 切换到新窗口driver.switch_to.window(all_handles[1])# 切换回原窗口driver.switch_to.window(all_handles[0])# 切换到iframeiframe = driver.find_element(By.TAG_NAME, \"iframe\")driver.switch_to.frame(iframe)# 切回主文档driver.switch_to.default_content()

处理下拉选择框

from selenium.webdriver.support.ui import Selectselect = Select(driver.find_element(By.ID, \"dropdown\"))# 通过可见文本选择select.select_by_visible_text(\"Option 1\")# 通过value属性选择select.select_by_value(\"1\")# 通过索引选择select.select_by_index(0)

浏览器操作

# 前进和后退driver.forward()driver.back()# 刷新页面driver.refresh()# 获取当前URLprint(driver.current_url)# 获取页面标题print(driver.title)# 获取页面源代码print(driver.page_source)# 设置窗口大小driver.set_window_size(1024, 768)# 最大化窗口driver.maximize_window()# 最小化窗口driver.minimize_window()# 全屏driver.fullscreen_window()

截图和保存

# 截屏保存driver.save_screenshot(\"screenshot.png\")# 获取元素截图element = driver.find_element(By.TAG_NAME, \"h1\")element.screenshot(\"element.png\")

使用Cookies

# 获取所有cookiesprint(driver.get_cookies())# 添加cookiedriver.add_cookie({\"name\": \"test\", \"value\": \"123\"})# 获取指定cookieprint(driver.get_cookie(\"test\"))# 删除cookiedriver.delete_cookie(\"test\")# 删除所有cookiesdriver.delete_all_cookies()

无头模式

无头模式运行浏览器,不显示GUI界面:

from selenium.webdriver.chrome.options import Optionsoptions = Options()options.add_argument(\"--headless\") # 启用无头模式options.add_argument(\"--disable-gpu\") # 禁用GPU加速driver = webdriver.Chrome(options=options)

关闭浏览器

# 关闭当前窗口driver.close()# 关闭所有窗口并退出浏览器driver.quit() # 推荐使用,确保释放资源

实际示例:自动登录网站

from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysimport time# 初始化浏览器driver = webdriver.Chrome()try: # 打开登录页面 driver.get(\"https://example.com/login\") # 输入用户名和密码 username = driver.find_element(By.ID, \"username\") password = driver.find_element(By.ID, \"password\") username.send_keys(\"your_username\") password.send_keys(\"your_password\") # 提交表单 password.send_keys(Keys.RETURN) # 等待登录完成 time.sleep(2) # 验证是否登录成功 if \"Dashboard\" in driver.title: print(\"登录成功!\") else: print(\"登录失败\") finally: # 关闭浏览器 driver.quit()

注意事项

  1. 元素定位:确保使用稳定的定位方式,避免使用可能变化的XPath

  2. 等待机制:合理使用隐式和显式等待,避免硬性等待(time.sleep)

  3. 异常处理:添加try-except块处理可能的异常

  4. 资源释放:始终在finally块中调用driver.quit()释放资源

  5. 反爬措施:部分网站有反爬机制,需合理设置请求间隔和User-Agent