Python自动化测试 环境搭建 Selenium、WebDriver下载、安装、配置、基本使用详解

news2024/11/19 0:46:01

基本于Python语言 和 Selenium框架,使用PyCharm 开发环境,详细介绍自动化测试环境的搭建 以及 基本的使用方法。

一、安装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安装对话界面,选择各安装项,如:Documentation文档、pip包管理工具(必选)、tcl/tk等(一般全都选上)、配置安装路径(这里选择安装在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:f3909b8, Apr  4 2023, 23:49:59) [MSC v.1934 64 bit (AMD64)] on win64
Type "help", "copyright", "credits" or "license" for more information.
>>>

3、安装pip包管理工具

注:如果已安装过pip包管理工具的话,此步也可直接路过(一般在安装Python环境时,可以在安装配置项中勾选上pip,这样在安装Python环境时自动将pip也安装上了),以下是没有过安装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 22.3.1 from D:\Program Files (x86)\Python311\Lib\site-packages\pip (python 3.11)

# 使用pip help命令可以显示所有pip的相关命令 和 功能说明
pip help
PS E:\Desktop> pip help
Usage:
  pip <command> [options]
Commands:
  install                     Install packages.
  download                    Download packages.
  uninstall                   Uninstall packages.
  freeze                      Output installed packages in requirements format.
  inspect                     Inspect the python environment.
  list                        List installed packages.
  show                        Show information about installed packages.
  check                       Verify installed packages have compatible dependencies.
  config                      Manage local and global configuration.
  search                      Search PyPI for packages.
  cache                       Inspect and manage pip's wheel cache.
  index                       Inspect information available from package indexes.
  wheel                       Build wheels from your requirements.
  hash                        Compute hashes of package archives.
  completion                  A helper command used for command completion.
  debug                       Show information useful for debugging.
  help                        Show help for commands.
  ...

二、安装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) 或 https://msedgewebdriverstorage.z22.web.core.windows.net

  • 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拉取代码等操作。

在这里插入图片描述

3、汉化PyCharm

默认情况下PyCharm编辑器是英文界面,如果想要显示中文界面,只需安装一个汉化插件即可。

Pycharm插件方法:

首先,打开PyCharm编辑器,点击左上角的主菜单按扭,选择“ file ”选项,然后点击“ setting ”,在打开后的界面中,点击“ plugins ”选项,输入“ Chinese ”找到中文安装包,点击“ Install ”,在安装完成后,点击“ restart IDE ”重启程序 或 关闭重新启动软件就变成中文界面啦。
在这里插入图片描述

4、其他Pycharm插件

PyCharm提供了许多好用的插件,可帮助提高开发效率,可根据自己的需要来进行安装,以下列出了一些常用的插件。
注:部公插件在安装后需要关闭Pycharm再重新打开才生效哦!

插件名称功能用途
Rainbow Brackets把括号的内层和外层用不同的颜色显示
Indent Rainbow对不同层级缩进的空格标注不同的颜色
Rainbow csv对CSV文件当中的不同的行都可以用不同的颜色标出
Tabnine自动填充代码插件
CodeGlance快速预览(在编辑器右侧生成预览区,拖到可快捷的定位所要寻找的代码位置)
JSON ParserJSON美化插件
Markdown Navigator可实时的预览和编辑Markdown文件
Translation翻译插件
Regex Tester正则表达式测试插件
Key Promoter X提供快捷键提示,以快速地掌握PyCharm的快捷键

四、安装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

1、全局安装

要查看全局安装的selenium包存放路径(一般同Python的安装路径) 如:D:\Program Files (x86)\Python311\lib\site-packages\selenium

# 格式 pip install 要安装的包名
pip install selenium
    
    
# 或(-U 安装或升级)
pip install -U selenium


# 如果要安装指定的selenium版本(安装其他包的操作也相同)
# 格式 pip install 要安装的包名 == 要指定安装的版本号
pip install selenium == 4.8.0


# 在输入pip install selenium命令后 按回车确认键,就开始显示以下安装过程
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 

2、局部安装

局部安装需要指定安装目录,可通过–target参数来指定

# 格式:
pip install --target=path_name package_name # path_name表示安装的路径, package_name表示安装包名

# 例如
pip install --target=./lib selenium # 表示将selenium包安装在,当前目录下的lib文件夹中(./表示当前目录)

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:
(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、创建实例项目

打开PyCharm编辑器,根据如下图所示创建自动化测试项目实例。
在这里插入图片描述

2、编写实例代码

项目创建完成后,新建一个python测试文件,用于编写测试代码,具体步骤:在左侧项目AutoTest文件夹上,鼠标点击右键 -> new 新建 -> python文件,输入文件名为test.py,操作实例如下图所示:
在这里插入图片描述
test.py文件内容如下

# -*- coding: UTF-8 -*-

# 导入selenium框架
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 开启浏览器测试会话
driver = webdriver.Edge()

# 注:如果不在PyCharm编辑器中运行代码,侧需要指定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()

3、运行实例代码

(1)、在PyCharm编辑器中运行代码

直接点击上方工具栏中的运行按扭(默认运行main.py文件),或 左侧左侧项目目录中的xxx.py文件上右击 -> Run运行(U) ,双或者 在左侧项目目录中选择好要运行的xxx.py文件,用快捷键同时按下Ctrl+Shift+F10来运行当前选中的文件 。
在这里插入图片描述

(2)、在Dos命令行工具中运行代码

进入要运行代码的目录,按住Shift键不放,鼠标在空白处右击 -> 在此处打开PowerShell命令窗口(S),输入python test.py 回车便启动运行啦!

python test.py
# 或
py test.py

在这里插入图片描述

命令执行后会自动打开浏览器,并跳转到测试实例代码中指定的网址,实例效果如下:

在这里插入图片描述

六、扩展

想了解更多Selenium框架的使用方法,可去这里查看 https://selenium-python.readthedocs.io/api.html

# 引入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.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()

# 关闭浏览器会话(关闭session等)
driver.quit()

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()

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)
    
(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)

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"
    
(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)
"""

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/437725.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

春秋云境:CVE-2022-28525 (文件上传漏洞)

目录 一、题目 1.登录 2.burp抓包改包 3.蚁剑获取flag 一、题目 ED01CMSv20180505存在任意文件上传漏洞 英语不够 翻译来凑&#xff1a; 点击其他页面会Not Found 找不到&#xff1a; 先登录看看吧&#xff1a; 试试万能密码&#xff1a;admin&#xff1a;123 发现错误…

王春玲:在 MogDB 中实现真正意义上的自治异步事务提交

导语 2023年4月7-8日&#xff0c;由中国DBA联盟&#xff08;ACDU&#xff09;和墨天轮社区联合主办的第十二届『数据技术嘉年华』(DTC 2023) 在北京新云南皇冠假日酒店成功举办。云和恩墨本原数据内核研发工程师王春玲在“智能前沿&#xff1a;数据库内核技术”专题论坛上发表了…

Adobe设计师证书

Adobe设计师证书又称为Adobe国际认证证书和Adobe认证证书&#xff0c;Adobe国际认证(英文:Adobe Certified Professional)是Adobe公司CEO签发的权威国际认证体系,旨在为用户提供Adobe软件的专业认证。 Adobe认证包括产品技能认证和职业技能认证多个级别&#xff0c;从初学者到专…

【PWN刷题wp】[BJDCTF 2020]babystack

新手上路~低速慢行~ 目录 前言 1. checksec 2. IDA 反汇编 3. payload编写 4. exp编写 5. pwntools用法 前言 作为pwn新手&#xff0c;尽可能在刷题中&#xff0c;记录、学习一些通用的知识点&#xff0c;因此wp是少不了的。 本题是一道简单的ret2text 1. checksec 没有…

程序员必会的英语单词汇总,学习速度可提高10倍,偷偷超越你身边的大聪明

前言 虽然说英语不好也能学编程&#xff0c;但学习速度却大大减慢&#xff0c;尤其是到后面你要查资料或者上Github等英文网站的时候&#xff0c;浏览器自带的翻译还会出错。 所以我专门花了几天的时间&#xff0c;结合自己这些年来的开发经验&#xff0c;把编程常用的英语单…

【C语言】基础语法3:控制流程结构

上一篇&#xff1a;运算符和表达式 下一篇&#xff1a;函数和递归 ❤️‍&#x1f525;前情提要❤️‍&#x1f525;   欢迎来到C语言基本语法教程   在本专栏结束后会将所有内容整理成思维导图&#xff08;结束换链接&#xff09;并免费提供给大家学习&#xff0c;希望大…

linux_设置定时器(C语言)-alarm函数-time命令-settimer函数

接上一篇&#xff1a;linux_信号-终端按键信号-硬件异常信号-kill函数-raise函数-abort函数 本次来分享linux的定时器&#xff0c;也就是alarm函数和settimer函数的调用&#xff0c;同时也介绍time的一种用法&#xff0c;开始上菜&#xff1a; 此博主在CSDN发布的文章目录&…

C语言CRC-32 STM32格式校验函数

C语言CRC-32 STM32格式校验函数 CRC-32校验产生4个字节长度的数据校验码&#xff0c;通过计算得到的校验码和获得的校验码比较&#xff0c;用于验证获得的数据的正确性。基本的CRC-32校验算法实现&#xff0c;参考&#xff1a; C语言标准CRC-32校验函数 不同厂家通过对输入数…

一文读懂JavaWeb,前后端数据交互原来是这样的

文章目录 一、HTTP是前后端数据交互的载体1. HTTP Request2. HTTP Response 二、数据交互格式 JSON1. JSON对象与JSON字符串2. 不同语言中的JSON对象与JSON字符串互换 三、前端如何发送数据1. 表单发送数据2. JSON对象发送数据3. JSON 字符串方式 四、前端如何接收数据五、后端…

Android开发之桌面小部件Widget的基本用法

咱们有这么一个需求&#xff0c;在桌面添加一个app的小部件&#xff0c;小部件展示app里面的热门数据&#xff0c;点击小部件的刷新按钮实现刷新小部件上面的数据的功能。 咱们先看实现的效果图&#xff1a; 小部件的基本需求实现如上&#xff1a; 说明&#xff0c;先创建一个…

EEG源定位

导读 自从脑电图(EEG)被发现以来&#xff0c;人们希望EEG能提供一个了解大脑的窗口&#xff0c;研究人员一直试图用EEG无创定位大脑中产生头皮电位的神经元活动。20世纪50年代的早期探索使用电场理论从头皮电位分布推断大脑中电流偶极子的位置和方向&#xff0c;引发了大量定量…

网络请求实战-实战websocket聊天程序

目录 WebSocket协议初探 Socket连接的建立过程 聊天室&#xff1a;node.js端 聊天室&#xff1a;web端 小结 WebSocket协议初探 一个基于TCP的通信协议 复用HTTP的握手基于TCP传输协议 101切换协议 WebSocket连接之后&#xff0c;传输的都是二进制数据了 Socket连接的建…

Jmeter前置处理器和后置处理器

1. 后置处理器(Post Processor) 本质上是⼀种对sampler发出请求后接受到的响应数据进⾏处理 &#xff08;后处理&#xff09;的⽅法 正则表达式后置处理器 &#xff08;1&#xff09;引⽤名称&#xff1a;下⼀个请求要引⽤的参数名称&#xff0c;如填写title&#xff0c;则可…

Transformer的原理及应用分析

上一篇博文重点介绍了Transformer的核心组件MultiHeadAttention多头注意力机制&#xff0c;本篇继续介绍transformer的原理。下图为transformer的结构图&#xff0c;其主要由位置编码、多组编码器和多组解码器。以下将重点介绍三个部分。 1. 位置编码 Positional Encoding Att…

基于html+css的图片展示18

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Scala循环中断

目录 1.使用抛出和捕获异常的方法跳出当前循环2.使用Scala中的Breaks类的break方法3.测试4.简化 使用 ._ 来引入全部内容 方便调用 在scala中无法直接使用break关键字跳出当前循环&#xff0c;但有其他方法 1.使用抛出和捕获异常的方法跳出当前循环 def main(args: Array[Str…

DAB-DETR代码学习记录之Transformer模块解析

DAB-DETR是吸收了Deformable-DETR&#xff0c;Conditional-DETR&#xff0c;Anchor-DETR等基础上完善而来的。其主要贡献为将query初始化为x,y,w,h思维坐标形式。 这篇博文主要从代码角度来分析DAB-DETR所完成的工作。 DAB-DETR主要是对Decoder模型进行改进。 位置编码的温度值…

「线性DP-步入」传球游戏

传球游戏 题目描述 ​ 上体育课的时候&#xff0c;小蛮的老师经常带着同学们一起做游戏。这次&#xff0c;老师带着同学们一起做传球游戏。 ​ 游戏规则是这样的&#xff1a;n个同学站成一个圆圈&#xff0c;其中的一个同学手里拿着一个球&#xff0c;当老师吹哨子时开始传球…

Java -枚举的使用

一、背景及定义 枚举是在JDK1.5以后引入的。主要用途是&#xff1a;将一组常量组织起来&#xff0c;在这之前表示一组常量通常使用定义常量的方式&#xff1a; public static int final RED 1; public static int final GREEN 2; public static int final BLACK 3;但是常量…

Python3 OpenCV4 计算机视觉学习手册:1~5

原文&#xff1a;Learning OpenCV 4 Computer Vision with Python 3 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 计算机视觉 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 当别人说你没有底线的时候&a…