一、安装Python环境:
Python环境目前已被大部分主流操作系统所支持,比如在Linux、Mac、Unix等系统上就自带了Python环境,但在Windows系统上目前还需要自己安装。
1、下载Python
Python下载地址:https://www.python.org/downloads
根据自己的需求下载对应的Python版本,一般进入官网的下载地址默认是最新版。
点击Downlad Python 3.11.2 按扭后,进入下载页面,选择自己想要安装的版下载
2、安装Python
点击下载好的python-3.11.3-amd64.exe可执行文件,进入Python安装对话界面,选择各安装项(一般全都选上)、配置安装路径(这里选择安装在D盘的Program Files (x86)目录下,[因为一般Windows系统默认C盘为系统盘,所以将软件安装在其他盘如:D盘])。
根据提示 Next 直到安装完成后,在命令窗口中输入 python --version 命令测试是否安装成功(注:若提示python命令不存在,先去检查否是有配置path环境变量(环境变量配置方法),如果path中没有配置python可手动将如下python路径添加到path中,或配置了没生效需要重启一下电脑即可)。
python --version
# 或
py --version
Python 3.11.3 # 显示版本号则表示安装成功!
# 输入python命令 或 py命令 按回车键
python
# 进入如下python命令模式
Python 3.11.3 (tags/v3.11.3:db3ff76, April 16 2023, 11:26:23) [MSC v.1929 64 bit (AMD64)] on win64 Type "help", "copyright", "credits" or "license" for more information.
>>>
二、安装pip包管理工具:
pip是一个安装Python包的管理工具,很多功能强大、使用方便的Python框架、插件、工具等,都是通过pip来进行安装的,在后面的自动化测试就需要pip来安装selenium自动化集成测试框架。
1、下载pip
注:如果是在Linux系统环境下(只要支持apt-get命令),可以直接执行如下命令安装即可!
apt-get install python-pip
pip下载地址:https://pypi.org/project/pip
2、安装pip:
将下载的pip-23.0.1.tar.gz文件解压,并在解压后的文件目录中打开命令行工具,执行安装命令(注:应步骤先安装好python环境才能执行成功哦!!)
python setup.py install
在命令执行结束后,执行如下命令,可查看是否安装成功。
pip --version
# 如果显示版本号则表示安装成功!
pip 23.0.1 from D:\Program Files (x86)\Python311\lib\site-packages\pip (python 3.11.3)
三、安装WebDriver浏览器驱动
WebDriver给Python、Ruby、Java、C#等高级语言提供的很多API,支持开发人员使用自己喜欢的编程语言来操作浏览器,尤其是用在自动化测试上,了解更多WebDriver。
现在一般主流浏览器都有对应的WebDriver驱动,根据自己的需求下载即可。
1、下载WebDriver
-
Chrome浏览器驱动下载地址:https://chromedriver.storage.googleapis.com/index.html
-
Edge浏览器驱动下载地址:https://developer.microsoft.com/zh-cn/microsoft-edge/tools/webdriver)
-
Mozilla浏览器驱动下载地址:https://github.com/mozilla/geckodriver/tags
-
Opera浏览器驱动下载地址:https://github.com/operasoftware/operachromiumdriver/tags
-
Safari浏览器驱动下载地址:https://webkit.org/blog/6900/webdriver-support-in-safari-10
可根据自己的需求,选择对应的驱动即可,这里以微软的Edge WebDriver为例(其他也是同样的操作),进入下载页面后,根据对应浏览器版本号,然后下载对应的WebDriver驱动文件。
2、安装WebDriver
将下载好的developer.exe驱动文件解压后,复制移动到Python解释器所在的文件夹(就是Python的安装目录,和python.exe同级目录)就完成安装了。
四、安装PyCharm 开发环境:
PyCharm 是一个强大的面向专业开发者的Python IDE(Python集成开发环境、代码编辑器),PyCharm完全理解代码的每个面向。 依靠它的智能代码补全、 实时错误检查和快速修复功能,轻松进行项目导航 等众多辅助功能。
1、下载PyCharm
PyCharm下载地址:https://www.jetbrains.com.cn/pycharm
根据自己的需求,选择对应操作系统下的试用收费版(【免费试用30天】比免费版支持开发语言更多、功能更齐全) 或 免费版(纯Python开发)。
2、安装PyCharm
点击下载好的pycharm-community-2023.1.exe可执行文件,进入PyCharm安装对话界面,配置安装路径(这里同样也选择安装在D盘的Program Files (x86)目录下),然后选择各安装项如:创建桌面快捷方式、添加环境变量、右键菜单等(一般全都选上),Next 直到安装结束。
待PyCharm安装完成后,自动会在桌面创建快捷方式,双击PyCharm图标打开如下界面,到此PyCharm就装完成功啦,可根据自己的需要,新建项目、打开项目、从Get拉取代码等操作。
五、安装Selenium框架:
Selenium是一个用于Web应用程序测试的自动化集成测试操作框架。由thoughtworks 公司推出,它可以直接在浏览器中运行,模拟真实用户对浏览器进行操作。利用selenium,可以驱动浏览器执行特定的动作,比如:点击、下拉等等,还可以获取浏览器当前呈现的页面的源代码。支持包括Microsoft Edge(IE之后)、Google Chrome、Opera、Mozilla Firefox、Apple Safari、等浏览器。
Selenium 官网:https://www.selenium.dev
Selenium GitHub地址:https://github.com/SeleniumHQ/selenium
Selenium API文档:https://www.selenium.dev/selenium/docs/api/py
安装selenium
全局安装:
要查看全局安装的selenium包存放路径(一般同Python的安装路径) 如:D:\Program Files (x86)\Python311\lib\site-packages\selenium
pip install selenium
# 或(-U 安装或升级)
pip install -U selenium
局部安装:
局部安装需要指定安装目录,可通过–target参数来指定
# 格式:
pip install --target=path_name package_name # path_name表示安装的路径, package_name表示安装包名
# 例如
pip install --target=./lib selenium # 表示将selenium包安装在,当前目录下的lib文件夹中(./表示当前目录)
六、自动化测试实例
1、创建自动化测试工程项目
2、测试实例代码 test.py文件内容
# -*- coding: UTF-8 -*-
# 导入selenium框架
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 开启浏览器测试会话,并指定Edge WebDriver驱动路径
driver = webdriver.Edge(r'D:/Program Files (x86)/Python311/msedgedriver.exe')
# 指定加载浏览器RUL(要测试的网址)
driver.get("http://www.muguilin.com")
# 最大化浏览器窗口
driver.maximize_window()
# 强制延时等待1分钟
time.sleep(60)
# 退出测试会话
driver.quit()
在命令行工具中,执行如下测试命令
python test.py
# 或
py test.py
执行测试命令后会自动在浏览器中打开指定的网址,效果如下:
七、扩展
# 引入selenium操作框架
from selenium import webdriver
# 开启浏览器会话
driver = webdriver.Edge()
# 显示driver对象提供的所有方法关键字
print('driver对象中的关键字:', dir(driver))
# 在下面的各个关键字前 加上 driver. 就可以访问对应的方法和常量了,如:driver.get_window_size()
'__abstractmethods__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_abc_impl', '_authenticator_id', '_file_detector', '_get_cdp_details', '_is_remote', '_mobile', '_shadowroot_cls', '_switch_to', '_unwrap_value', '_web_element_cls', '_wrap_value', 'add_cookie', 'add_credential', 'add_virtual_authenticator', 'application_cache', 'back', 'bidi_connection', 'capabilities', 'caps', 'close', 'command_executor', 'create_options', 'create_web_element', 'current_url', 'current_window_handle', 'delete_all_cookies', 'delete_cookie', 'delete_network_conditions', 'desired_capabilities', 'error_handler', 'execute', 'execute_async_script', 'execute_cdp_cmd', 'execute_script', 'file_detector', 'file_detector_context', 'find_element', 'find_elements', 'forward', 'fullscreen_window', 'get', 'get_cookie', 'get_cookies', 'get_credentials', 'get_issue_message', 'get_log', 'get_network_conditions', 'get_pinned_scripts', 'get_screenshot_as_base64', 'get_screenshot_as_file', 'get_screenshot_as_png', 'get_sinks', 'get_window_position', 'get_window_rect', 'get_window_size', 'implicitly_wait', 'launch_app', 'log_types', 'maximize_window', 'minimize_window', 'mobile', 'name', 'orientation', 'page_source', 'pin_script', 'pinned_scripts', 'port', 'print_page', 'quit', 'refresh', 'remove_all_credentials', 'remove_credential', 'remove_virtual_authenticator', 'save_screenshot', 'service', 'session_id', 'set_network_conditions', 'set_page_load_timeout', 'set_permissions', 'set_script_timeout', 'set_sink_to_use', 'set_user_verified', 'set_window_position', 'set_window_rect', 'set_window_size', 'start_client', 'start_desktop_mirroring', 'start_session', 'start_tab_mirroring', 'stop_casting', 'stop_client', 'switch_to', 'timeouts', 'title', 'unpin', 'vendor_prefix', 'virtual_authenticator_id', 'window_handles'
1、Selenium常用浏览器操作Api说明
# 引入selenium操作框架
from selenium import webdriver
from selenium.webdriver.common.by import By
# 开启浏览器会话
driver = webdriver.Chrome()
# driver = webdriver.Edge()
# 加载浏览器RUL
driver.get("http://www.muguilin.com")
# 打开新页面
driver.navigate().to("http://www.muguilin.com/blog");
# 最大化窗口(有时候执行某些按扭、事件等无效时,就是没有最大化浏览器窗口【不在可视区】导致的!)
driver.maximize_window()
# 最小化窗口
driver.minimize_window()
# 获取当前浏览器窗口可视区宽高
driver.get_window_size()
# 获取当前窗口坐标
driver.get_window_position()
# 设置窗口大小
driver.set_window_size(1920, 1080)
# 刷新页面
driver.refresh()
# 前进页面
driver.forward()
# 后退页面
driver.back()
# 关闭窗口
driver.close()
# 关闭浏览器会话(关闭session等)
driver.quit()
2、Selenium常用DOM元素选择、操作Api说明
# 引入selenium操作框架
from selenium import webdriver
from selenium.webdriver.common.by import By
# 开启浏览器会话
driver = webdriver.Chrome()
# 其他浏览器会话方法
# webdriver.Firefox()
# webdriver.FirefoxProfile()
# webdriver.FirefoxOptions()
# webdriver.Chrome()
# webdriver.ChromeOptions()
# webdriver.Ie()
# webdriver.IeOptions()
# webdriver.Edge()
# webdriver.ChromiumEdge()
# webdriver.EdgeOptions()
# webdriver.Safari()
# webdriver.WebKitGTK()
# webdriver.WebKitGTKOptions()
# webdriver.WPEWebKit()
# webdriver.WPEWebKitOptions()
# webdriver.Remote()
# webdriver.DesiredCapabilities()
# webdriver.ActionChains()
# webdriver.Proxy()
# webdriver.Keys()
# 最大化窗口
driver.maximize_window()
# 选择input元素并设置值
username = driver.find_element(by=By.ID, value='username').send_keys('admin')
passwerd = driver.find_element(by=By.ID, value='passwerd').send_keys('123456')
# 选择button元素并模拟点击事件
driver.find_element(by=By.ID, value='login-button').click()
# 设置取username输入框文本内容
username.sendKeys(“root”);
# 获取username输入框文本内容
username.getText();
# 清空username输入框文本内容
username.clear();
# driver.find_element(By.ID, 'xxxid') // 单个DOM元素选择器方法
# driver.find_elements(By.CLASS_NAME, 'xxxClassName') // 多个DOM元素选择器方法
# 其他DOM元素选择器方法
# ID = "id"
# NAME = "name"
# TAG_NAME = "tag name"
# CLASS_NAME = "class name"
# LINK_TEXT = "link text"
# PARTIAL_LINK_TEXT = "partial link text"
# XPATH = "xpath"
# CSS_SELECTOR = "css selector"
# 关闭浏览器会话
driver.quit()