浏览器类自动化测试¶
浏览器类¶
提示
需要安装 selenium chrome浏览器或者Firefox浏览器
本地调试下需要安装 chrome浏览器 chromedriver驱动 或者 Firefox geckodriver驱动
window macos ubuntu 使用 浏览器初始化本地环境() 就可以自动检测驱动和自动下载配置
使用 docker 部署远程浏览器 无需安装驱动
部署时建议使用docker部署远程浏览器
安装 selenium¶
pip install selenium
chromedriver 驱动下载¶
https://chromedriver.chromium.org/
https://chromedriver.storage.googleapis.com/index.html?path=90.0.4430.24/
docker部署远程浏览器¶
linux¶
docker run --name chrome -d -p 4444:4444 -p 5900:5900 -v /dev/shm:/dev/shm selenium/standalone-chrome-debug:3.141.59-20210422
window¶
docker run --name chrome -d -p 4444:4444 -p 5900:5900 selenium/standalone-chrome-debug:3.141.59-20210422
vpc连接远程桌面¶
VNC Viewer https://www.realvnc.com/en/connect/download/viewer/
127.0.0.1:5900 即可连接至远程桌面
1import unittest
2import warnings
3
4from .seleniumUtil import *
5from pyefun import *
6
7
8class TestseleniumUtil(unittest.TestCase):
9
10 def test_1(self):
11 pass
12 浏览器初始化本地环境()
13
14 浏览器 = 浏览器类()
15 浏览器.打开chrome()
16
17 浏览器.浏览网页("https://www.baidu.com")
18 print(浏览器.取页面标题())
19 print(浏览器.取名称())
20 # print(浏览器.取页面链接())
21 # print(浏览器.取页面源码())
22 with 时间统计("就绪"):
23 print(浏览器.等待元素显示(5, "s_ipt"))
24
25 延时(1)
26
27 搜索输入框 = 浏览器.取元素从id("kw")
28 百度一下按钮 = 浏览器.取元素从id("su")
29
30 搜索输入框.输入("pyefun")
31 百度一下按钮.点击()
32
33 延时(1)
34
35 with 时间统计("结果就绪"):
36 print(浏览器.等待元素显示(5, "result"))
37
38 搜索结果 = 浏览器.取元素从class_name("result")
39 print("搜索结果多少条", len(搜索结果))
40 for 元素 in 搜索结果:
41 print(元素.取文本())
42 # print(元素.取源码())
43
44 延时(1)
45 浏览器.退出()
46
47 def test_2(self):
48 pass
49
50 warnings.simplefilter('ignore', ResourceWarning) # 屏蔽一堆错误
51
52 浏览器 = 浏览器类()
53 远程浏览器地址 = "http://127.0.0.1:4444/wd/hub"
54 while 浏览器.远程浏览器是否就绪(远程浏览器地址) == False:
55 延时(1)
56 print("浏览器未就绪")
57
58 浏览器.获取远程chrome(远程浏览器地址)
59
60 浏览器.浏览网页("https://www.baidu.com")
61 print(浏览器.取页面标题())
62 print(浏览器.取名称())
63 # print(浏览器.取页面链接())
64 # print(浏览器.取页面源码())
65 with 时间统计("就绪"):
66 print(浏览器.等待元素显示(5, "s_ipt"))
67
68 延时(1)
69
70 搜索输入框 = 浏览器.取元素从id("kw")
71 百度一下按钮 = 浏览器.取元素从id("su")
72
73 搜索输入框.输入("pyefun")
74 百度一下按钮.点击()
75
76 延时(1)
77
78 with 时间统计("结果就绪"):
79 print(浏览器.等待元素显示(5, "result"))
80
81 搜索结果 = 浏览器.取元素从class_name("result")
82 print("搜索结果多少条", len(搜索结果))
83 for 元素 in 搜索结果:
84 print(元素.取文本())
85 # print(元素.取源码())
86
87 延时(1)
88 浏览器.退出()
- class pyefun.seleniumUtil.seleniumUtil.浏览器类[源代码]¶
基类:
object
- 打开chrome(驱动路径='chromedriver', 无痕模式=True, 无头模式=False, 隐藏自动化提示=True, 隐藏滚动条=False, 禁止加载图片=False, 禁用插件=False, 禁止Javascript=False, 禁用JAVA=False, 禁止密码保存提示=True, 禁用弹窗=False, 禁止策略化=False, 初始运行=False, 沙盒运行=True, user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36', 代理='', 编码='lang=zh_CN.UTF-8', 禁止使用GPU=False, 谷歌浏览器路径='')[源代码]¶
代理格式:127.0.0.1:8888 带账号密码验证的自行百度修改
- 等待元素加载(By元素类型=0, 元素名称='', 等待秒数=60)[源代码]¶
成功返回真,失败返回假 ,By元素类型参数0是css_selector 谷歌直接复制 1 是id属性 2是name属性, 3 是链接名称 4是xpath属性 5是class_name属性 6是tag_name属性 7,模糊 链接名称
- 获取本地chrome(驱动路径='chromedriver', ChromeOptions=<selenium.webdriver.chrome.options.Options object>)[源代码]¶