Python Selenium自动化测试基础教程:从环境搭建到元素定位
本文详细介绍Python中Selenium库的基本使用方法,涵盖从导入包、创建驱动对象到请求页面、获取源码及关闭浏览器的完整流程。重点解析find_element与find_elements的定位语法差异,以及如何通过ID、XPath等方式操作点击、输入和获取数据。此外,还包含Cookie处理、JS执行、窗口切换及弹窗处理等高级技巧,帮助开发者高效进行Web自动化测试。
本文旨在阐述Python Selenium库的核心用法,供读者参考学习。
Selenium是一款Web自动化测试工具,它可直接在浏览器环境中运行,接收指令并自动加载页面,从而获取所需数据。
Selenium基础操作流程
Selenium的基础操作流程
第一步:导入必要的库包
from selenium import webdriver
第二步:初始化并创建驱动对象
webdriver.PhantomJS()
第三步:发起页面请求
driver.get("http://www.baidu.com")
第四步:获取并查看网页源码
driver.page_source
第五步:关闭无界面浏览器实例
driver.quit()
第六步:通过ID定位页面元素
drivrt.find_element_by_id("kw")
第七步:执行点击事件操作
click()
第八步:向输入框赋值
send_keys()
元素定位与数据获取
Selenium的元素定位机制
常用的元素定位语法如下:
find_element_by_id(返回单个元素对象) find_elements_by_xpath(返回包含多个元素的列表) find_elements_by_link_text(根据完整链接文本获取元素列表) find_elements_by_partial_link_text(根据链接部分文本获取元素列表) find_elements_by_tag_name(根据标签名称获取元素列表) find_elements_bu_class_name(根据类名获取元素列表,注意此处原文拼写可能为by_class_name)
注意事项
需区分find_element与find_elements:前者返回匹配到的第一个元素,后者因带有s后缀,返回包含所有匹配元素的列表。
数据获取方法
获取元素文本内容:element.text
获取元素属性值:element.get_attribute("href")
高级功能:Cookie、JS执行与窗口切换
Selenium的其他常用功能
Selenium对Cookie的处理
driver.get_cookies(),该方法返回完整的Cookie信息,不仅包含name和value,还包含domain等其他字段。
# 把cookie转换为字典
cookies_dict = {cookie['name']: cookie['value'] for cookie in driver.get_cookies()}
# 删除一条cookie
driver.delete_cookie("CookieName")
# 删除所有cookie
driver.delete_all_cookies()
页面等待机制
time.sleep(10)
在Selenium中执行JavaScript代码
driver.execute_script('js语句')
switch方法用于切换上下文的操作
1. 窗口句柄切换
# 获取当前所有的窗口
current_windows = driver.window_handles
# 根据窗口索引进行切换
driver.switch_to.window(current_windows[1])
2. Selenium默认无法直接访问frame框架内的内容,解决方法是使用driver.switch_to.frame()
3. 处理页面弹出的提示框
driver.switch_to.alert()
页面前进与后退功能
driver.forward() # 前进
driver.back(() # 后退
Selenium优缺点总结
Selenium的优缺点分析
- 优点:Selenium能够执行页面内的JavaScript代码,对于处理JS渲染的数据以及模拟登录等场景较为便捷。
- 缺点:由于在获取页面过程中会发送大量请求,导致运行效率相对较低。
如需了解更多Python相关知识,可参考本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望上述内容能对您的Python编程实践有所帮助。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









