WebDriver给Python、Ruby、Java、C#等高级语言提供的很多API,支持开发人员使用自己喜欢的编程语言来操作浏览器,尤其是用在自动化测试上,了解更多WebDriver。
现在一般主流浏览器都有对应的WebDriver浏览器驱动,根据自己的需求下载即可。
可根据自己的需求,选择对应类型版本的驱动即可,这里以微软的Edge WebDriver为例(其他也是同样的操作),进入下载页面后,根据对应浏览器版本号,然后下载对应的WebDriver驱动文件。
注:WebDriver驱动版本号 一定要和 Web浏览器版本号 对应!!
注:WebDriver驱动版本号 一定要和 Web浏览器版本号 对应!!
将下载好的developer.exe驱动文件解压后,复制移动到Python解释器所在的文件夹(就是Python的安装目录,和python.exe同级目录)就完成安装了。
PyCharm 是一个强大的面向专业开发者的Python IDE(Python集成开发环境、代码编辑器),PyCharm完全理解代码的每个面向。 依靠它的智能代码补全、 实时错误检查和快速修复功能,轻松进行项目导航 等众多辅助功能。
PyCharm下载地址:https://www.jetbrains.com.cn/pycharm
根据自己的需求,选择对应操作系统下的试用收费版(【免费试用30天】比免费版支持开发语言更多、功能更齐全) 或 免费版(纯Python开发)。
点击下载好的pycharm-community-2023.1.exe可执行文件,进入PyCharm安装对话界面,配置安装路径(这里同样也选择安装在D盘的Program Files (x86)目录下),然后选择各安装项如:创建桌面快捷方式、添加环境变量、右键菜单等(一般全都选上),Next 直到安装结束。
待PyCharm安装完成后,自动会在桌面创建快捷方式,双击PyCharm图标打开如下界面,到此PyCharm就装完成功啦,可根据自己的需要,新建项目、打开项目、从Get拉取代码等操作。
默认情况下PyCharm编辑器是英文界面,如果想要显示中文界面,只需安装一个汉化插件即可。
Pycharm插件方法:
首先,打开PyCharm编辑器,点击左上角的主菜单按扭,选择“ file ”选项,然后点击“ setting ”,在打开后的界面中,点击“ plugins ”选项,输入“ Chinese ”找到中文安装包,点击“ Install ”,在安装完成后,点击“ restart IDE ”重启程序 或 关闭重新启动软件就变成中文界面啦。
PyCharm提供了许多好用的插件,可帮助提高开发效率,可根据自己的需要来进行安装,以下列出了一些常用的插件。
注:部公插件在安装后需要关闭Pycharm再重新打开才生效哦!
插件名称 | 功能用途 |
---|
Rainbow Brackets | 把括号的内层和外层用不同的颜色显示 |
Indent Rainbow | 对不同层级缩进的空格标注不同的颜色 |
Rainbow csv | 对CSV文件当中的不同的行都可以用不同的颜色标出 |
Tabnine | 自动填充代码插件 |
CodeGlance | 快速预览(在编辑器右侧生成预览区,拖到可快捷的定位所要寻找的代码位置) |
JSON Parser | JSON美化插件 |
Markdown Navigator | 可实时的预览和编辑Markdown文件 |
Translation | 翻译插件 |
Regex Tester | 正则表达式测试插件 |
Key Promoter X | 提供快捷键提示,以快速地掌握PyCharm的快捷键 |
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包存放路径(一般同Python的安装路径) 如:D:\Program Files (x86)\Python311\lib\site-packages\selenium
pip install selenium
pip install -U selenium
pip install selenium == 4.8.0
PS E:\AutoTest> pip install selenium
Defaulting to user installation because normal site-packages is not writeable
Collecting selenium
Downloading selenium-4.8.3-py3-none-any.whl (6.5 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━ 5.8/6.5 MB 86.6 kB/s eta 0:00:16
局部安装需要指定安装目录,可通过–target参数来指定
pip install --target=path_name package_name
pip install --target=./lib selenium
安装完成后,想要查看某个包的版本号,可在命令行工具中输入pip show 包名 来进行查看
pip show selenium
PS E:\AutoTest> pip show selenium
Name: selenium
Version: 4.8.3
Summary:
Home-page: https://www.selenium.dev
Author:
Author-email:
License: Apache 2.0
Location: C:\Users\MuGuiLin\AppData\Roaming\Python\Python311\site-packages
Requires: certifi, trio, trio-websocket, urllib3
Required-by:
如果想要删除已安装好的包,可在命令行工具中输入 pip uninstall 包名 来进行卸载删除
pip uninstall selenium
PS E:\AutoTest> pip uninstall selenium
Found existing installation: selenium 4.8.3
Uninstalling selenium-4.8.3:
Would remove:
c:\users\muguilin\appdata\roaming\python\python311\site-packages\selenium-4.8.3.dist-info\*
c:\users\muguilin\appdata\roaming\python\python311\site-packages\selenium\*
Proceed (Y/n)?
打开PyCharm编辑器,根据如下图所示创建自动化测试项目实例。
项目创建完成后,新建一个python测试文件,用于编写测试代码,具体步骤:在左侧项目AutoTest文件夹上,鼠标点击右键 -> new 新建 -> python文件,输入文件名为test.py,操作实例如下图所示:
test.py文件内容如下
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Edge()
driver.get("http://www.muguilin.com")
driver.maximize_window()
time.sleep(60)
driver.quit()
直接点击上方工具栏中的运行按扭(默认运行main.py文件),或 左侧左侧项目目录中的xxx.py文件上右击 -> Run运行(U) ,双或者 在左侧项目目录中选择好要运行的xxx.py文件,用快捷键同时按下Ctrl+Shift+F10来运行当前选中的文件 。
进入要运行代码的目录,按住Shift键不放,鼠标在空白处右击 -> 在此处打开PowerShell命令窗口(S),输入python test.py 回车便启动运行啦!
python test.py
py test.py
命令执行后会自动打开浏览器,并跳转到测试实例代码中指定的网址,实例效果如下:
在Pycharm中打开项目后,在运行时可能报selenium不存在、找不到selenium模块,selenium和webdriver上下有红色波浪线,左下角也提示:unresolved reference ‘webdriver’,导致无法运行。
原因: 在Pycharm打开新打开 或 新建项目时,会自动设置(可也以指定)运行环境为虚拟环境。此如一来,即便是之前你在操作系统中安装了selenium模块,但是这个新打开 或 新建项目的venv虚拟环境中是没有selenium 模块,所以才会提示在Pycharm 找不到selenium模块导致的这个错误。
**解决办法:**就是在项目的venv虚拟环境目录中安装selenium
1、在Pycharm中打在命令行工具
2、进入venv虚拟环境目录:cd venv
3、进入python虚拟环境:Scripts\activate
4、安装selenium模块包:pip install selenium
想了解更多Selenium框架的使用方法,可去这里查看 https://selenium-python.readthedocs.io/api.html
from selenium import webdriver
driver = webdriver.Edge()
print('driver对象中的关键字:', dir(driver))
'__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'
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("http://www.muguilin.com")
driver.navigate().to("http://www.muguilin.com/blog")
driver.maximize_window()
driver.minimize_window()
driver.save_screenshot('fileName')
driver.get_window_size()
driver.get_window_position()
driver.set_window_size(1920, 1080)
driver.refresh()
driver.forward()
driver.back()
driver.close()
driver.quit()
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://www.muguilin.com")
username = driver.find_element(by=By.ID, value='username').send_keys('admin')
passwerd = driver.find_element(by=By.ID, value='passwerd').send_keys('123456')
driver.find_element(by=By.ID, value='login-button').click()
username.sendKeys('root')
username.getText()
username.clear()
driver.quit()
Selenium框架中的ActionChains类供了很多,如:右击,双击,悬停,滑动、以及拖放等鼠标模拟操作。
"""The ActionChains implementation,"""
class ActionChains:
def __init__(self, driver, duration=250)
def perform(self)
def reset_actions(self)
def click(self, on_element=None)
def click_and_hold(self, on_element=None)
def context_click(self, on_element=None)
def double_click(self, on_element=None)
def drag_and_drop(self, source, target)
def drag_and_drop_by_offset(self, source, xoffset, yoffset)
def key_down(self, value, element=None)
def key_up(self, value, element=None)
def move_by_offset(self, xoffset, yoffset)
def move_to_element(self, to_element)
def move_to_element_with_offset(self, to_element, xoffset, yoffset)
def pause(self, seconds)
def release(self, on_element=None)
def send_keys(self, *keys_to_send)
def send_keys_to_element(self, element, *keys_to_send)
def scroll_to_element(self, element: WebElement)
def scroll_by_amount(self, delta_x: int, delta_y: int)
def scroll_from_origin(self, scroll_origin: ScrollOrigin, delta_x: int, delta_y: int)
def scroll(self, x: int, y: int, delta_x: int, delta_y: int, duration: int = 0, origin: str = "viewport")
def __enter__(self)
def __exit__(self, _type, _value, _traceback)
在使用前,需要先导入ActionChains类,通过ActionChains类提供的相关方法来模拟鼠标操作,在调用ActionChains的方法时,并不是立即执行的,而是把所有的操作,按顺序存放在一个队列里,当调用perform()方法时,队列中的事件会依次执行。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains
from time import sleep
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
action = ActionChains(driver)
sleep(1)
action.context_click().perform()
element = driver.find_element(by=By.ID, value='kw')
action.context_click(element).perform()
sleep(10)
在自动化测试开发过程中,除了模拟鼠标操作以外,有时还需要借助模拟键盘操作一起来配合使用,Selenium的Keys类供了很多复制、粘贴、全选,以及触发回车键、删除键甚至组合式快捷键等。
"""The Keys implementation."""
class Keys:
"""Set of special keys codes."""
NULL = "\ue000"
CANCEL = "\ue001"
HELP = "\ue002"
BACKSPACE = "\ue003"
BACK_SPACE = BACKSPACE
TAB = "\ue004"
CLEAR = "\ue005"
RETURN = "\ue006"
ENTER = "\ue007"
SHIFT = "\ue008"
LEFT_SHIFT = SHIFT
CONTROL = "\ue009"
LEFT_CONTROL = CONTROL
ALT = "\ue00a"
LEFT_ALT = ALT
PAUSE = "\ue00b"
ESCAPE = "\ue00c"
SPACE = "\ue00d"
PAGE_UP = "\ue00e"
PAGE_DOWN = "\ue00f"
END = "\ue010"
HOME = "\ue011"
LEFT = "\ue012"
ARROW_LEFT = LEFT
UP = "\ue013"
ARROW_UP = UP
RIGHT = "\ue014"
ARROW_RIGHT = RIGHT
DOWN = "\ue015"
ARROW_DOWN = DOWN
INSERT = "\ue016"
DELETE = "\ue017"
SEMICOLON = "\ue018"
EQUALS = "\ue019"
NUMPAD0 = "\ue01a"
NUMPAD1 = "\ue01b"
NUMPAD2 = "\ue01c"
NUMPAD3 = "\ue01d"
NUMPAD4 = "\ue01e"
NUMPAD5 = "\ue01f"
NUMPAD6 = "\ue020"
NUMPAD7 = "\ue021"
NUMPAD8 = "\ue022"
NUMPAD9 = "\ue023"
MULTIPLY = "\ue024"
ADD = "\ue025"
SEPARATOR = "\ue026"
SUBTRACT = "\ue027"
DECIMAL = "\ue028"
DIVIDE = "\ue029"
F1 = "\ue031"
F2 = "\ue032"
F3 = "\ue033"
F4 = "\ue034"
F5 = "\ue035"
F6 = "\ue036"
F7 = "\ue037"
F8 = "\ue038"
F9 = "\ue039"
F10 = "\ue03a"
F11 = "\ue03b"
F12 = "\ue03c"
META = "\ue03d"
COMMAND = "\ue03d"
ZENKAKU_HANKAKU = "\ue040"
在使用前,需要先导入Keys类,在选择好DOM元素后,配合send_keys()方法一起模拟键盘操作
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from time import sleep
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
sleep(1)
driver.find_element(by=By.ID, value='kw').send_keys('沐枫', Keys.ENTER)
sleep(10)
单个键 模拟
element.send_keys(Keys.F1) # 键盘F1
element.send_keys(Keys.F5) # 键盘F5(页面刷新)
element.send_keys(Keys.F12) # 键盘F2(页面调试)
element.send_keys(Keys.TAB) # 制表键(TAB)
element.send_keys(Keys.BACK_SPACE) # 退格键(BackSpace)
element.send_keys(Keys.DELETE) # 删除键(DELETE)
element.send_keys(Keys.ENTER) # 回车键(ENTER)
element.send_keys(Keys.SPACE) # 空格键(SPACE)
组合键 模拟
element.send_keys(Keys.CONTROL,'a') # 全选(Ctrl+A)
element.send_keys(Keys.CONTROL,'x') # 剪切(Ctrl+X)
element.send_keys(Keys.CONTROL,'c') # 复制(Ctrl+C)
element.send_keys(Keys.CONTROL,'s') # 保存(Ctrl+S)
element.send_keys(Keys.CONTROL,'v') # 粘贴(Ctrl+V)
Python自动化测试 环境搭建 Selenium、WebDriver下载、安装、配置、基本使用详解,基于Python语言 和 Selenium框架,使用PyCharm 开发环境,详细介绍自动化测试环境的搭建 以及 基本的使用方法。
设计模式:按照Server-Client的经典设计模式设计;
Server端:即Remote Server(远程服务器),可以是任意的浏览器,当脚本启动浏览器时,该浏览器就是Remote Server,它的职责是等待Client发送请求并做出响应;
Client端:简单来说就是我们的测试代码,测试代码中的一些行为是以HTTP请求的方式发送给被测试浏览器——Remote Server,Remote Server接受请求,执行相应操作,
并在Response中返回执行状态、返
Webdriver (Selenium2)是一种用于Web应用程序的自动测试工具;
它提供了一套友好的API;
Webdriver完全就是一套类库,不依赖于任何测试框架,除了必要的浏览器驱动;
WebDriver API 支持的开发语言
官网文档:https://docs.seleniumhq.org/docs/03_webdriver.jsp
Pyth...
selenium1.x:这个时候的selenium,使用的是JavaScript注入技术与浏览器打交道。需要Selenium RC启动一个Server,将操作Web元素的API调用转化为一段段Javascript,在Selenium内核启动浏览器之后注入这段Javascript。Javascript可以获取并调用DOM的任何元素,自如的进行操作。由此才实现了Selenium的目的:自动化Web操作。
这种Javascript注入技术的缺点是速度不理想,而且稳定性大大依赖于Selenium内核对
要搭建Python自动化测试环境,首先需要选择一个适合的IDE工具。常用的选择包括PyCharm和VS Code等。接下来,你可以使用Python的自动化测试框架来创建和运行测试用例。这些框架可以帮助团队快速创建和运行测试用例,并确保软件的质量和可靠性。在学习和使用这些框架时,可以参考一些教程和学习资源,比如哔哩哔哩上的Python自动化测试学习教程。这些教程可以帮助你系统地学习Python自动化测试开发框架的使用方法。通过搭建合适的环境和学习相关的知识,你就可以开始进行Python自动化测试的开发和调试了。123
#### 引用[.reference_title]
- *1* *2* *3* [Python 自动化测试框架环境怎么搭建?这篇文章给你讲的明明白白](https://blog.csdn.net/MXB_1220/article/details/130093710)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item]
[ .reference_list ]