Selenium WebDriver 是一个用于自动化Web应用程序测试的开源工具。它提供一组API,直接与浏览器进行通信,模拟用户操作。
安装编程语言环境:Selenium支持多种语言。以Python为例,从Python官网下载并安装Python 3.8+版本。
安装Selenium库:通过pip包管理器安装。执行命令:
pip install selenium
下载浏览器驱动:WebDriver需要特定驱动程序与浏览器交互。
Chrome:访问ChromeDriver官网,下载与本地Chrome浏览器版本匹配的chromedriver。
Firefox:访问GeckoDriver官网,下载geckodriver。
配置驱动路径:将下载的驱动程序(如chromedriver.exe)放置在系统PATH环境变量指定的目录中,或直接在代码中指定路径。
以下是一个使用Python语言编写的基础脚本,实现打开浏览器并访问网页。
# 导入Selenium WebDriver模块from selenium import webdriverfrom selenium.webdriver.common.by import Byimport time# 1. 初始化浏览器驱动,启动Chrome浏览器driver = webdriver.Chrome() # 若驱动不在PATH,需指定路径:webdriver.Chrome(executable_path=r'你的路径\chromedriver.exe')# 2. 导航到一个网页driver.get("https://www.zmtests.com")# 3. 在搜索框中输入关键词。通过元素ID定位输入框。search_box = driver.find_element(By.ID, "kw") search_box.send_keys("Selenium自动化测试")# 4. 点击“百度一下”按钮。通过元素ID定位按钮。search_button = driver.find_element(By.ID, "su") search_button.click()# 5. 等待几秒,观察结果time.sleep(5)# 6. 关闭浏览器driver.quit()
元素定位:WebDriver提供多种定位页面元素的方法,通过find_element(By.*, "value")实现。
By.ID:使用元素的id属性。 (driver.find_element(By.ID, "kw"))
By.NAME:使用元素的name属性。
By.CLASS_NAME:使用元素的class属性。
By.TAG_NAME:使用元素的标签名(如<input>)。
By.CSS_SELECTOR:使用CSS选择器,功能强大。
By.XPATH:使用XPath表达式,用于复杂定位。
常见浏览器操作:
driver.get(url):导航到指定URL。
driver.back() / driver.forward():浏览器后退/前进。
driver.refresh():刷新页面。
driver.title / driver.current_url:获取页面标题或当前URL。
driver.quit():关闭所有窗口并退出驱动。driver.close():关闭当前窗口。
常见用户操作:
element.send_keys("text"):在输入框输入文本。
element.click():点击元素。
element.clear():清除输入框内容。
element.text:获取元素的文本内容。
1.使用显式等待:替代time.sleep()固定等待。显式等待指定条件成立后继续执行,提高测试效率与可靠性。
from selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as EC# 等待直到页面标题包含“Selenium”WebDriverWait(driver, 10).until(EC.title_contains("Selenium"))# 等待直到元素在页面上可见并可点击element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "su")))
2.处理iframe:操作iframe内的元素前,需先切换至该iframe。
driver.switch_to.frame("iframe_name_or_id") # 通过name/id切换# 操作iframe内的元素...driver.switch_to.default_content() # 切换回主文档
执行测试:使用单元测试框架(如Python的unittest或pytest)组织和管理测试用例。
生成报告:结合测试框架(如pytest-html插件)或第三方库(如Allure)生成结构化的测试报告,便于分析结果。