Python自动化测试 环境搭建 Selenium、WebDriver下载、安装、配置、基本使用详解
后台-插件-广告管理-内容页头部广告(手机) |
基本于Python语言 和 Selenium框架,使用PyCharm 开发环境,详细介绍自动化测试环境的搭建 以及 基本的使用方法。
一、安装Python环境
Python环境目前已被大部分主流操作系统所支持,比如在Linux、Mac、Unix等系统上就自带了Python环境,但在Windows系统上目前还需要自己安装,(当然如已经安装过了的话,这步可以直接跳过)。
1、下载Python
Python下载地址:https://www.python.org/downloads
%20根据自己的需求下载对应的Python版本,一般进入官网的下载地址默认是最新版。
%20 %20点击Downlad%20Python%203.11.2%20按扭后,进入下载页面,选择自己想要安装的版下载
%20 %202、安装Python
%20点击下载好的python-3.11.3-amd64.exe可执行文件,进入Python安装对话界面,选择各安装项,如:Documentation文档、pip包管理工具(必选)、tcl/tk等(一般全都选上)、配置安装路径(这里选择安装在D盘的Program%20Files%20(x86)目录下,[因为一般Windows系统默认C盘为系统盘,所以将软件安装在其他盘如:D盘])。
%20 %20根据提示%20Next%20直到安装完成后,在命令窗口中输入%20python%20--version%20命令测试是否安装成功(注:若提示python命令不存在,先去检查否是有配置path环境变量(环境变量配置方法),如果path中没有配置python可手动将如下python路径添加到path中,或配置了没生效需要重启一下电脑即可)。
%20 python%20--version #%20或 py%20--version Python%203.11.3%20%20%20#%20显示版本号则表示安装成功! #%20输入python命令%20或%20py命令%20按回车键%20 python #%20进入如下python命令模式 Python%203.11.3%20(tags/v3.11.3:f3909b8,%20Apr%20%204%202023,%2023:49:59)%20[MSC%20v.1934%2064%20bit%20(AMD64)]%20on%20win64 Type%20"help",%20"copyright",%20"credits"%20or%20"license"%20for%20more%20information. >>>- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
3、安装pip包管理工具
%20%20 %20%20注:如果已安装过pip包管理工具的话,此步也可直接路过(一般在安装Python环境时,可以在安装配置项中勾选上pip,这样在安装Python环境时自动将pip也安装上了),以下是没有过安装pip的安装步骤!
%20
%20 %20%20pip是一个安装Python包的管理工具,很多功能强大、使用方便的Python框架、插件、工具等,都是通过pip来进行安装的,在后面的自动化测试就需要pip来安装selenium自动化集成测试框架。
%20
(1)、下载pip
%20注:如果是在Linux系统环境下(只要支持apt-get命令),可以直接执行如下命令安装即可!
%20 apt-get%20install%20python-pip- 1
- 2
pip下载地址:https://pypi.org/project/pip
%20 %20(2)、安装pip
%20将下载的pip-23.0.1.tar.gz文件解压,并在解压后的文件目录中打开命令行工具,执行安装命令(注:应步骤先安装好python环境才能执行成功哦!!)
%20 python%20setup.py%20install- 1
- 2
在命令执行结束后,执行如下命令,可查看是否安装成功。
%20 pip%20--version #%20如果显示版本号则表示安装成功!%20 pip%2022.3.1%20from%20D:\Program%20Files%20(x86)\Python311\Lib\site-packages\pip%20(python%203.11) #%20使用pip%20help命令可以显示所有pip的相关命令%20和%20功能说明 pip%20help PS%20E:\Desktop>%20pip%20help Usage: %20%20pip%20- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
二、安装WebDriver驱动
WebDriver给Python、Ruby、Java、C#等高级语言提供的很多API,支持开发人员使用自己喜欢的编程语言来操作浏览器,尤其是用在自动化测试上,了解更多WebDriver。
现在一般主流浏览器都有对应的WebDriver浏览器驱动,根据自己的需求下载即可。
1、下载WebDriver
-
Chrome浏览器驱动下载地址:chromedriver.storage.googleapis.com/index.html
-
Edge浏览器驱动下载地址:developer.microsoft.com/zh-cn/micro… 或 msedgewebdriverstorage.z22.web.core.windows.net
-
Mozilla浏览器驱动下载地址:github.com/mozilla/gec…
-
Opera浏览器驱动下载地址:github.com/operasoftwa…
-
Safari浏览器驱动下载地址:webkit.org/blog/6900/w…
可根据自己的需求,选择对应类型版本的驱动即可,这里以微软的Edge WebDriver为例(其他也是同样的操作),进入下载页面后,根据对应浏览器版本号,然后下载对应的WebDriver驱动文件。
%202、安装WebDriver
%20将下载好的developer.exe驱动文件解压后,复制移动到Python解释器所在的文件夹(就是Python的安装目录,和python.exe同级目录)就完成安装了。
%20 %20三、安装PyCharm%20开发环境
%20%20 %20%20PyCharm%20是一个强大的面向专业开发者的Python%20IDE(Python集成开发环境、代码编辑器),PyCharm完全理解代码的每个面向。%20依靠它的智能代码补全、%20实时错误检查和快速修复功能,轻松进行项目导航%20等众多辅助功能。
%20
1、下载PyCharm
%20PyCharm下载地址:https://www.jetbrains.com.cn/pycharm
%20根据自己的需求,选择对应操作系统下的试用收费版(【免费试用30天】比免费版支持开发语言更多、功能更齐全)%20或%20免费版(纯Python开发)。
%20 %202、安装PyCharm
%20点击下载好的pycharm-community-2023.1.exe可执行文件,进入PyCharm安装对话界面,配置安装路径(这里同样也选择安装在D盘的Program%20Files%20(x86)目录下),然后选择各安装项如:创建桌面快捷方式、添加环境变量、右键菜单等(一般全都选上),Next%20直到安装结束。
%20 %20待PyCharm安装完成后,自动会在桌面创建快捷方式,双击PyCharm图标打开如下界面,到此PyCharm就装完成功啦,可根据自己的需要,新建项目、打开项目、从Get拉取代码等操作。
%20 %203、汉化PyCharm
%20默认情况下PyCharm编辑器是英文界面,如果想要显示中文界面,只需安装一个汉化插件即可。
%20Pycharm插件方法:
%20首先,打开PyCharm编辑器,点击左上角的主菜单按扭,选择“%20file%20”选项,然后点击“%20setting%20”,在打开后的界面中,点击“%20plugins%20”选项,输入“%20Chinese%20”找到中文安装包,点击“%20Install%20”,在安装完成后,点击“%20restart%20IDE%20”重启程序%20或%20关闭重新启动软件就变成中文界面啦。%20
%204、其他Pycharm插件
%20PyCharm提供了许多好用的插件,可帮助提高开发效率,可根据自己的需要来进行安装,以下列出了一些常用的插件。%20注:部公插件在安装后需要关闭Pycharm再重新打开才生效哦!
%20插件名称 | 功能用途 |
---|---|
Rainbow%20Brackets | 把括号的内层和外层用不同的颜色显示 |
Indent%20Rainbow | 对不同层级缩进的空格标注不同的颜色 |
Rainbow%20csv | 对CSV文件当中的不同的行都可以用不同的颜色标出 |
Tabnine | 自动填充代码插件 |
CodeGlance | 快速预览(在编辑器右侧生成预览区,拖到可快捷的定位所要寻找的代码位置) |
JSON%20Parser | JSON美化插件 |
Markdown%20Navigator | 可实时的预览和编辑Markdown文件 |
Translation | 翻译插件 |
Regex%20Tester | 正则表达式测试插件 |
Key%20Promoter%20X | 提供快捷键提示,以快速地掌握PyCharm的快捷键 |
四、安装Selenium框架
%20%20 %20%20Selenium是一个用于Web应用程序测试的自动化集成测试操作框架。由thoughtworks%20公司推出,它可以直接在浏览器中运行,模拟真实用户直接在浏览器中模拟用户操作。在自动化测试中,可用于单元测试、冒烟测试、集成测试、回归测试、系统测试等,并且可以运行在不同类型的浏览器和操作系统上。利用Selenium,可以驱动浏览器执行特定的动作,比如:点击、下拉等等,还可以获取浏览器当前呈现的页面的源代码。支持包括Microsoft%20Edge(IE之后)、Google%20Chrome、Opera、Mozilla%20Firefox、Apple%20Safari、等浏览器。
%20
Selenium%20官网:https://www.selenium.dev
%20Selenium%20GitHub地址:https://github.com/SeleniumHQ/selenium
%20Selenium%20API文档:https://www.selenium.dev/selenium/docs/api/py
%201、全局安装
%20要查看全局安装的selenium包存放路径(一般同Python的安装路径)%20如:D:\Program%20Files%20(x86)\Python311\lib\site-packages\selenium
%20 #%20格式%20pip%20install%20要安装的包名 pip%20install%20selenium %20%20%20%20 %20%20%20%20 #%20或(-U%20安装或升级) pip%20install%20-U%20selenium #%20如果要安装指定的selenium版本(安装其他包的操作也相同) #%20格式%20pip%20install%20要安装的包名%20==%20要指定安装的版本号 pip%20install%20selenium%20==%204.8.0 #%20在输入pip%20install%20selenium命令后%20按回车确认键,就开始显示以下安装过程 PS%20E:\AutoTest>%20pip%20install%20selenium Defaulting%20to%20user%20installation%20because%20normal%20site-packages%20is%20not%20writeable Collecting%20selenium Downloading%20selenium-4.8.3-py3-none-any.whl%20(6.5%20MB) %20%20%20%20%20━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━%205.8/6.5%20MB%2086.6%20kB/s%20eta%200:00:16%20- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
2、局部安装
局部安装需要指定安装目录,可通过–target参数来指定
# 格式: pip install --target=path_name package_name # path_name表示安装的路径, package_name表示安装包名 # 例如 pip install --target=./lib selenium # 表示将selenium包安装在,当前目录下的lib文件夹中(./表示当前目录)- 1
- 2
- 3
- 4
- 5
- 6
3、查看与卸载
(1)、查看包的版本号
安装完成后,想要查看某个包的版本号,可在命令行工具中输入pip show 包名 来进行查看
pip show selenium # 如在输入pip show selenium命令后 按回车确认键,会显示出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:- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
(2)、卸载已安装好的包
如果想要删除已安装好的包,可在命令行工具中输入 pip uninstall 包名 来进行卸载删除
pip uninstall selenium # 在输入pip uninstall selenium命令后 按回车确认键,会显提示Proceed (Y/n)? 输入Y表示确认删除! 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)?- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
五、自动化测试实例
1、创建实例项目
打开PyCharm编辑器,根据如下图所示创建自动化测试项目实例。
%202、编写实例代码
%20项目创建完成后,新建一个python测试文件,用于编写测试代码,具体步骤:在左侧项目AutoTest文件夹上,鼠标点击右键%20->%20new%20新建%20->%20python文件,输入文件名为test.py,操作实例如下图所示:%20test.py文件内容如下
%20 #%20-*-%20coding:%20UTF-8%20-*- #%20导入selenium框架 from%20selenium%20import%20webdriver from%20selenium.webdriver.common.by%20import%20By import%20time #%20开启浏览器测试会话 driver%20=%20webdriver.Edge() #%20注:如果不在PyCharm编辑器中运行代码,侧需要指定Edge%20WebDriver驱动路径 #%20driver%20=%20webdriver.Edge(r'D:/Program%20Files%20(x86)/Python311/msedgedriver.exe') #%20指定加载浏览器RUL(要测试的网址) driver.get("http://www.muguilin.com") #%20最大化浏览器窗口 driver.maximize_window() #%20强制延时等待1分钟 time.sleep(60) #%20退出测试会话 driver.quit()- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
3、运行实例代码
(1)、在PyCharm编辑器中运行代码
直接点击上方工具栏中的运行按扭(默认运行main.py文件),或 左侧左侧项目目录中的xxx.py文件上右击 -> Run运行(U) ,双或者 在左侧项目目录中选择好要运行的xxx.py文件,用快捷键同时按下Ctrl+Shift+F10来运行当前选中的文件 。
%20(2)、在Dos命令行工具中运行代码
%20进入要运行代码的目录,按住Shift键不放,鼠标在空白处右击%20->%20在此处打开PowerShell命令窗口(S),输入python%20test.py%20回车便启动运行啦!
%20 python%20test.py #%20或 py%20test.py- 1
- 2
- 3
- 4
命令执行后会自动打开浏览器,并跳转到测试实例代码中指定的网址,实例效果如下:
%20 %20(3)、从Git上%20或者%20是从其他地方复制过的代码,在Pycharm中打开项目运行。
%20在Pycharm中打开项目后,在运行时可能报selenium不存在、找不到selenium模块,selenium和webdriver上下有红色波浪线,左下角也提示:unresolved%20reference%20‘webdriver’,导致无法运行。
%20原因:%20在Pycharm打开新打开%20或%20新建项目时,会自动设置(可也以指定)运行环境为虚拟环境。此如一来,即便是之前你在操作系统中安装了selenium模块,但是这个新打开%20或%20新建项目的venv虚拟环境中是没有selenium%20模块,所以才会提示在Pycharm%20找不到selenium模块导致的这个错误。
%20**解决办法:**就是在项目的venv虚拟环境目录中安装selenium%201、在Pycharm中打在命令行工具%202、进入venv虚拟环境目录:cd%20venv%203、进入python虚拟环境:Scripts\activate%204、安装selenium模块包:pip%20install%20selenium%20
%20六、扩展
%20%20 %20%20 #%20引入selenium操作框架 from%20selenium%20import%20webdriver #%20开启浏览器会话 driver%20=%20webdriver.Edge() #%20显示driver对象提供的所有方法关键字 print('driver对象中的关键字:',%20dir(driver)) #%20在下面的各个关键字前%20加上%20driver.%20就可以访问对应的方法和常量了,如:driver.get_window_size() '__abstractmethods__',%20'__class__',%20'__delattr__',%20'__dict__',%20'__dir__',%20'__doc__',%20'__enter__',%20'__eq__',%20'__exit__',%20'__format__',%20'__ge__',%20'__getattribute__',%20'__gt__',%20'__hash__',%20'__init__',%20'__init_subclass__',%20'__le__',%20'__lt__',%20'__module__',%20'__ne__',%20'__new__',%20'__reduce__',%20'__reduce_ex__',%20'__repr__',%20'__setattr__',%20'__sizeof__',%20'__str__',%20'__subclasshook__',%20'__weakref__',%20'_abc_impl',%20'_authenticator_id',%20'_file_detector',%20'_get_cdp_details',%20'_is_remote',%20'_mobile',%20'_shadowroot_cls',%20'_switch_to',%20'_unwrap_value',%20'_web_element_cls',%20'_wrap_value',%20'add_cookie',%20'add_credential',%20'add_virtual_authenticator',%20'application_cache',%20'back',%20'bidi_connection',%20'capabilities',%20'caps',%20'close',%20'command_executor',%20'create_options',%20'create_web_element',%20'current_url',%20'current_window_handle',%20'delete_all_cookies',%20'delete_cookie',%20'delete_network_conditions',%20'desired_capabilities',%20'error_handler',%20'execute',%20'execute_async_script',%20'execute_cdp_cmd',%20'execute_script',%20'file_detector',%20'file_detector_context',%20'find_element',%20'find_elements',%20'forward',%20'fullscreen_window',%20'get',%20'get_cookie',%20'get_cookies',%20'get_credentials',%20'get_issue_message',%20'get_log',%20'get_network_conditions',%20'get_pinned_scripts',%20'get_screenshot_as_base64',%20'get_screenshot_as_file',%20'get_screenshot_as_png',%20'get_sinks',%20'get_window_position',%20'get_window_rect',%20'get_window_size',%20'implicitly_wait',%20'launch_app',%20'log_types',%20'maximize_window',%20'minimize_window',%20'mobile',%20'name',%20'orientation',%20'page_source',%20'pin_script',%20'pinned_scripts',%20'port',%20'print_page',%20'quit',%20'refresh',%20'remove_all_credentials',%20'remove_credential',%20'remove_virtual_authenticator',%20'save_screenshot',%20'service',%20'session_id',%20'set_network_conditions',%20'set_page_load_timeout',%20'set_permissions',%20'set_script_timeout',%20'set_sink_to_use',%20'set_user_verified',%20'set_window_position',%20'set_window_rect',%20'set_window_size',%20'start_client',%20'start_desktop_mirroring',%20'start_session',%20'start_tab_mirroring',%20'stop_casting',%20'stop_client',%20'switch_to',%20'timeouts',%20'title',%20'unpin',%20'vendor_prefix',%20'virtual_authenticator_id',%20'window_handles'想了解更多Selenium框架的使用方法,可去这里查看%20selenium-python.readthedocs.io/api.html
%20
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
1、Selenium常用的浏览器操作API
%20 #%20引入selenium操作框架 from%20selenium%20import%20webdriver from%20selenium.webdriver.common.by%20import%20By #%20开启浏览器会话 driver%20=%20webdriver.Chrome() #%20driver%20=%20webdriver.Edge() #%20指定加载浏览器RUL driver.get("http://www.muguilin.com") #%20打开新页面 driver.navigate().to("http://www.muguilin.com/blog") #%20最大化窗口(有时候执行某些按扭、事件等无效时,就是没有最大化浏览器窗口【不在可视区】导致的!) driver.maximize_window() #%20最小化窗口 driver.minimize_window() #%20保存屏幕截图 driver.save_screenshot('fileName') #%20获取当前浏览器窗口可视区宽高 driver.get_window_size() #%20获取当前窗口坐标 driver.get_window_position() #%20设置窗口大小 driver.set_window_size(1920,%201080) #%20刷新页面 driver.refresh() #%20前进页面 driver.forward() #%20后退页面 driver.back() #%20关闭窗口 driver.close() #%20关闭浏览器会话(关闭session等) driver.quit()- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
2、Selenium常用的元素选择器(元素定位)
# 引入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() # 指定加载浏览器RUL driver.get("http://www.muguilin.com") # 选择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()- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
3、Selenium鼠标模拟操作(ActionChains类)
Selenium框架中的ActionChains类供了很多,如:右击,双击,悬停,滑动、以及拖放等鼠标模拟操作。
(1)、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)- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
(2)、ActionChains类的基本使用
在使用前,需要先导入ActionChains类,通过ActionChains类提供的相关方法来模拟鼠标操作,在调用ActionChains的方法时,并不是立即执行的,而是把所有的操作,按顺序存放在一个队列里,当调用perform()方法时,队列中的事件会依次执行。
# 引入selenium操作框架 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver import ActionChains from time import sleep # 开启浏览器会话 driver = webdriver.Chrome() # 指定加载浏览器RUL driver.get("http://www.baidu.com") # 装载ActionChains类 action = ActionChains(driver) sleep(1) # 模拟右键点击 action.context_click().perform() # 在选择ID为kw的input元素上 模拟右键点击 element = driver.find_element(by=By.ID, value='kw') action.context_click(element).perform() sleep(10)- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
4、Selenium键盘模拟操作(Keys类)
在自动化测试开发过程中,除了模拟鼠标操作以外,有时还需要借助模拟键盘操作一起来配合使用,Selenium的Keys类供了很多复制、粘贴、全选,以及触发回车键、删除键甚至组合式快捷键等。
(1)、Keys类
"""The Keys implementation.""" class Keys: """Set of special keys codes.""" NULL = "\ue000" CANCEL = "\ue001" # ^break 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" # number pad keys 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" # function keys 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"- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
(2)、Keys类的基本使用
在使用前,需要先导入Keys类,在选择好DOM元素后,配合send_keys()方法一起模拟键盘操作
# 引入selenium操作框架 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() # 指定加载浏览器RUL driver.get("http://www.baidu.com") sleep(1) # 在选择ID为kw的input元素上 模拟按回车键 driver.find_element(by=By.ID, value='kw').send_keys('沐枫', Keys.ENTER) # 回车键(ENTER) #driver.switch_to.active_element.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) """- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
题外话
当下这个大数据时代不掌握一门编程语言怎么跟的上脚本呢?当下最火的编程语言Python前景一片光明!如果你也想跟上时代提升自己那么请看一下.
感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |