UI自动化测试03

article/2025/10/24 15:59:05

一、警告框处理

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>警告窗口操作</title><script type="text/javascript">// JavaScript一些函数// 定义了一个函数function alterbutton(){alert("我是你想看到的人!!!")}function confirmButton(){// msg 接受的就是确定或者取消msg = confirm("点击确定或者取消:")// 判断if (msg){alert("点击了确认按钮")}else{alert("点击了取消按钮")}}function promptButton(){msg = prompt('输入一个值:', '我是默认值');alert(msg)}</script></head><body><!-- type:指明类型value:按钮的名字onclick:当你点击这个按钮的时候执行那一段函数--><input type="button" value="我是一个普通按钮" onclick="alterbutton()"/><input type="button" value="具有确定和取消按钮" onclick="confirmButton()"/><input type="button" value="具有确定和取消按钮可以输入内容" onclick="promptButton()"/></body>
</html>

1.普通的alter弹窗

from selenium import webdriver
import os
import time
# 打开浏览器
driver = webdriver.Edge()
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(10)
# 由于是直接打开一个html页面,所以这里需要我们进行一次路径的转换拼接
filepath = "file:///" + os.path.abspath("new_file03.html")
# 打开网页
driver.get(filepath)
# 点击 按钮
driver.find_element_by_css_selector('input[οnclick="alterbutton()"]').click()
# 切换到alter弹窗
alert_obj = driver.switch_to.alert
# 获取弹窗文本信息
print(alert_obj.text)
time.sleep(3)
# 点击 弹窗的确认按钮
alert_obj.accept()

二、confirm弹窗(确定和取消按钮)

from selenium import webdriver
import os
import time
# 打开浏览器
driver = webdriver.Edge()
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(10)
# 由于是直接打开一个html页面,所以这里需要我们进行一次路径的转换拼接
filepath = "file:///" + os.path.abspath("new_file03.html")
# 打开网页
driver.get(filepath)
# 点击
driver.find_element_by_css_selector('input[οnclick="confirmButton()"]').click()
# 切换到该弹窗
confirm_obj = driver.switch_to.alert
# 获取弹窗文本信息
print(confirm_obj.text)
# 点击 确定 按钮
# confirm_obj.accept()
time.sleep(2)
# 点击 取消 按钮
confirm_obj.dismiss()

三、prompt有取消确定按钮 可以输入内容

driver.switch_to.alert:首先要切换到弹窗

.send_keys(“张无忌”):给弹窗输入内容

accept():点击确定按钮

dismiss():取消按钮

from selenium import webdriver
import os
import time
# 打开浏览器
driver = webdriver.Edge()
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(10)
# 由于是直接打开一个html页面,所以这里需要我们进行一次路径的转换拼接
filepath = "file:///" + os.path.abspath("new_file03.html")
# 打开网页
driver.get(filepath)
# 点击
driver.find_element_by_css_selector('input[οnclick="promptButton()"]').click()
# 切换到该弹窗
prompt_obj = driver.switch_to.alert
time.sleep(2)
# 给弹窗中输入内容
prompt_obj.send_keys("张无忌")
time.sleep(2)
# 点击 确定 按钮
prompt_obj.accept()

二、下拉选择框的处理

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>下拉选择框</title></head><body><select name="myselect"><!-- value属性的值在下拉选择框的选项中一般是唯一的 --><option value="o1">谷歌搜索</option><option value="o2">百度搜索</option><option value="o3">搜狗搜索</option><option value="o4">bing搜索</option><option value="o5">360搜索</option></select></body>
</html>
from selenium import webdriver
from selenium.webdriver.support.ui import Select
import time
import os
# 打开浏览器
driver = webdriver.Edge()
# 浏览器最大化
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(10)
# 路径转换拼接
filepath = "file:///" + os.path.abspath("new_file04.html")
# 打开网页
driver.get(filepath)
# 先进行类的实例化,传入下拉选择框的对象
select_obj = driver.find_element_by_name('myselect')
s1 = Select(select_obj)
# 选择具体的选项:有三种方式
# 方式一:通过索引选择:索引是从0开始的 每一个option都有索引
# s1.select_by_index(0)
# 方式二:通过value属性的值
# s1.select_by_value('o4')
# 方式三:通过文本选择
s1.select_by_visible_text("搜狗搜索")

三、浏览器驱动

谷歌的驱动淘宝备用地址:https://registry.npmmirror.com/binary.html?path=chromedriver/
火狐浏览器驱动:https://github.com/mozilla/geckodriver/releases
EDGE:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

四、文件上传

126邮箱中添加附件

from selenium import webdriver
import os
import time
# 打开谷歌浏览器
driver = webdriver.Edge()
# 设置浏览器最大化
driver.maximize_window()
# 设置隐式等待
driver.implicitly_wait(10)
# 路径拼接
filepath = "file:///" + os.path.abspath("upfile.html")
# 打开文本
driver.get(filepath)
time.sleep(3)
# 如果你通过定位发现文件上传功能是使用input标签实现的,直接选择中该input标签,调用send_keys上传即可
driver.find_element_by_name('file').send_keys(r"F:\桌面壁纸\1.jpg")

五、selenium执行JavaScript代码

from selenium import webdriver
import time
# 打开浏览器
driver = webdriver.Edge()
# 设置浏览器最大化
driver.maximize_window()
# 设置隐式等待
driver.implicitly_wait(10)
# 打开网页
driver.get("http://www.baidu.com")
# 设置浏览器的窗口大小
driver.set_window_size(500, 600)
time.sleep(3)
# 浏览器的滚动条拖动就需要使用JavaScript代码来控制
# 100 指的水平方法的滚动条到左边页面的距离, 450 指的垂直方法到上页面的距离
js = "window.scrollTo(100,450);"
driver.execute_script(js)

六、关闭浏览器的操作

from selenium import webdriver
import time
# 打开浏览器
driver = webdriver.Edge()
# 设置浏览器最大化
driver.maximize_window()
# 设置隐式等待
driver.implicitly_wait(10)
# 打开网页
driver.get("http://www.baidu.com")
# 点击 hao123
time.sleep(2)
driver.find_element_by_xpath('//div[@id="s-top-left"]/a[2]').click()
time.sleep(3)
"""
close:如果该浏览器有多个标签页面,则会关闭第一个标签页如果浏览器只有一个标签页,调用close会关闭整个浏览器
quit:关闭整个浏览器
"""
driver.quit()

项目部署

1.Tomcat容器

docker run --name mytomcat -p 8888:8080 -v /tmp/test:/usr/local/tomcat/webapps/ -d tomcat:8

run: 生成容器

—name : 给容器起的名字,可以不指定,会自动分配一个名字

-p : 端口映射 主机端口:容器端口

-P: 也是端口映射,但是会自动分配一个主机端口和容器的端口做映射

-v : 做路径映射,主机路径 :容器中webapps的路径

-d:后台运行

2.MySQL容器

docker run -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

3.防火墙的配置

#查看防火墙状态
firewall-cmd --state# 开放8888和3307端口
firewall-cmd --permanent --add-port=8888/tcp
firewall-cmd --permanent --add-port=3307/tcp
​
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

4.将war放到映射到的 /tmp/test,修改配置文件

jdbc.properties

image-20220419173423484

5.创建数据库:

创建的数据库的名字必须和jdbc.properties中显示一样

6.重启容器

docker restart 容器id 容器id

7.测试

http://172.16.3.153:8888/WoniuBoss4.0

WNCD000 woniu123

退出容器:CTRL + P + Q

exit:有时候会导致容器停止运行

可以不用做

容器的开机自启,在etc/rc.d 下面有一个rc.local 这个文件,centos7在开启的时候会自动执行这个文本中的代码,我们执行将启动docker以及docker 容器的命令添加到里面即可

image-20220419174324093

配置如下:

systemctl start docker
docker start f52451d6430e e298f66099ab

image-20220419174655600

在centos7中,rc.local是没有执行权限的,所有还需要给授权

chmod 777 rc.local

docker部署禅道

docker run --name zentao -p 9999:80 -v /data/www:/app/zentaopms -v /data/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d idoop/zentao

systemctl start docker
docker start f52451d6430e e298f66099ab


[外链图片转存中...(img-8BSwTCjV-1669174475663)]在centos7中,rc.local是没有执行权限的,所有还需要给授权

chmod 777 rc.local


## docker部署禅道

docker run --name zentao -p 9999:80 -v /data/www:/app/zentaopms -v /data/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d idoop/zentao


设置防火墙允许9999端口通过

http://chatgpt.dhexx.cn/article/NEyl4JI7.shtml

相关文章

【UI自动化-3】UI自动化元素操作专题

前言 在熟悉了元素定位之后&#xff0c;我们接下来就要学习对定位到的元素进行操作这项内容了。我简要做了个总结&#xff0c;如下图&#xff1a; 1 基本操作 元素的基本操作有很多&#xff0c;常用的有三个&#xff1a;click&#xff08;点击&#xff09;、clear&#xff…

mysql数据库命令备份还原

一、备份指定表&#xff1a; 在安装有mysql客户端的服务器命令行执行&#xff1a; mysqldump -h mysqlip -uusername -ppassword dbname tablename1 tablename2 > /home/XXXX.sql 如果表特别大&#xff0c;可以加入“nohup &” 来后台执行&#xff0c;以防窗口关闭等…

cmd 下mysql常用的数据库命令

其实如果不想打开mysql软件去操作数据库的话&#xff0c;可以通过DOS命令去操作数据库&#xff0c;也是比较快捷的方式&#xff0c;根据个人的操作喜好而定。 按 winR 键后输入 cmd 进入DOS命令窗口 切换目录到mysql文件下的bin目录&#xff0c;这里以phpstudy_pro 集成环境为…

oracle创建数据库命令

oracle创建数据库命令 1.打开cmd 连接系统默认数据库 2. 创建表空间 CREATE TABLESPACE DATA DATAFILE ‘D:\oracle\DATA\DATA.ORA’ size 10G autoextend on next 1M Maxsize unlimited logging extent management local segment space management auto; 3.创建临时空间 CRE…

css grid 自动高度_十一款游戏教你学会 CSS!

关注“脚本之家”&#xff0c;与百万开发者在一起 网上有很多有助于学习CSS的游戏&#xff0c;本文收集了一些非常实用的免费CSS游戏&#xff0c;希望这些游戏可以帮助你再次体验CSS的乐趣&#xff01; 作者 | Andreas Mller 译者 | 弯月&#xff0c;责编 | 郭芮 出品 | CSDN(I…

CSS设置高度等于动态的宽度

如果子元素根据父元素设置宽度&#xff0c;那么将其高度设置为0&#xff0c;并将padding-bottom设置为百分比&#xff0c;则该子元素的高度将根据它的宽度计算。 <div class"div1"><div class"div2"></div> </div>.div1{width:40…

通关这8个游戏,保证你能精通CSS

在知乎上随便一艘,CSS难学,就会找到很多关于CSS为什么这么难学的提问?各种回答都有,但是我觉得在游戏中学习CSS是最好的,毕竟人的天性就是爱玩。以以 Flexbox 布局为例。弹性容器的属性justify-content可以有12 个不同的值,我们要怎么记住呢?在Flexbox Froggy这款游戏就…

Web前端--HTML+CSS+JavaScript酷炫游戏动漫网页设计

临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大&#xff1f;网页要求的总数量太多&#xff1f;HTML网页作业无从下手&#xff1f;没有合适的模板&#xff1f;等等一系列问题。你想要解决的问题&#xff0c;在这里常见网页设计作业题材有 个人、 美食、 公司、…

css 真正意义上达到height:100%,自适应屏幕高度

最近发现了个用绝对布局写自适应屏幕的写法&#xff0c;让我觉得&#xff0c;之前小程序傻傻读屏幕高再给背景view赋值min-height的写法简直太傻了毕竟能用css解决的问题最好就不要js .shi{position: absolute;top: 0px;bottom: 0;left: 0;width: 20%;background-color: black…

CSS如何设置高度为屏幕高度_HTML和CSS中你应该知道的12个重点难点问题

这12个问题&#xff0c;基本上就是HTML和CSS基础中的重点个难点了&#xff0c;也是必须要弄清楚的基本问题。其中定位的绝对定位和相对定位到底相对什么定位&#xff1f;这个还是容易被忽视的&#xff0c;浮动也是一个大坑&#xff0c;有很多细节。 这12个知识点是我个人认为的…

十一款游戏教你学会 CSS!

网上有很多有助于学习CSS的游戏&#xff0c;本文收集了一些非常实用的免费CSS游戏&#xff0c;希望这些游戏可以帮助你再次体验CSS的乐趣&#xff01; 作者 | Andreas Mller 译者 | 弯月&#xff0c;责编 | 郭芮 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 以…

js 中 clientHeight、scrollHeight 等获取的高度的区别和使用

1、 clientHeight 在盒模型中&#xff0c;代表元素的高度加内边距。 语法&#xff1a; var elmnt document.getElementById("content"); element.scrollHeight;2、scrollHeight 代表元素的像素高度&#xff0c;值等于该元素在不使用滚动条的情况下为了适应视口中所…

【CSS】div等元素height:100%高度为什么不生效

以前一直很郁闷一个问题&#xff0c;为什么设置height:100%不生效&#xff0c;尤其是设置body:height:100%不生效&#xff0c;后来就很少使用了这个了。 今天在学习谷歌地图时关于height:100%看到了解答&#xff1a; In specific, all percentage-based sizes must inherit fr…

css后台页面布局效果

CSS浮动定位 参考:实现左边div固定宽度&#xff0c;右边div自适应撑满剩下的宽度的布局方式&#xff1a;https://www.cnblogs.com/yzhihao/p/6513022.html 下面使用的关键就是使用overflow:hidden开启右侧内容区的BFC&#xff0c;使得左边的浮动元素无法盖住右侧内容区&#x…

前端搭建(HTML+CSS+JS)游戏官网(或其它)页面------实例与代码(示例:游戏官网界面)

前端搭建&#xff08;HTMLCSSJS&#xff09;游戏官网&#xff08;或其它&#xff09;页面------实例与代码&#xff08;示例&#xff1a;游戏官网界面&#xff09; 注意&#xff1a;网页中的示例图片均出自米哈游–原神官网设计&#xff0c;如侵权&#xff0c;联系博主立马进行…

html + css +js:仿原神游戏登录页面(初步)

效果图&#xff1a; html&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" conten…

css布局,让侧边栏高度撑满,并且不会随着屏幕内容滚动

一、需求 要让左侧边栏固定&#xff0c;并且不会随着页面的滚动向上滚动&#xff0c;侧边栏内容如果超出&#xff0c;可以显示滚动条 二、实现原理 设置布局&#xff1a;position: fixed 设置overflow-y: scroll 三、效果图&#xff1a; 四、实现代码 <!DOCTYPE HTML&…

新年第一弹:js、css与高度(宽度)共享

高度共享&#xff0c;是高度共享和宽度共享的总称。是笔者总结的一个针对某些问题解决的思路。并不是一个新的技术点或模式 —— 至少目前来说。甚至可能你已经在项目中用过类似的。 它的核心就是&#xff1a;降低 js 复杂计算和耗时操作在类似场景中的比重。 没啥说的&#x…

这个 api 管理工具悄悄开源了,快来看看

说到开源的 API 管理工具&#xff0c;大家可能很容易想到 Postman 的妹妹 Postwoman,如果你也喜欢开源产品&#xff0c;那接下来这个工具你可不能错过~ Eoapi 是一款类 Postman 的开源 API 管理工具&#xff0c;它更轻量&#xff0c;同时可拓展。 支持基础的 API 文档和测试功…

Apipost和 Apifox 哪个好用?两大国产API管理工具深度对比

Apipost和 Apifox 哪个好&#xff1f;这两款国产API 管理工具的推广力度那叫一个猛&#xff0c;就鬼打墙似的&#xff0c;我在哪个公众号都能看到他们两家的推广。 我内心OS 就是&#xff1a; 只有充分内卷&#xff0c;才能够把厂商们的平均水平提上来&#xff0c;真正的强者…