一、警告框处理
<!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
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 容器的命令添加到里面即可
配置如下:
systemctl start docker
docker start f52451d6430e e298f66099ab
在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端口通过