赞
踩
想必大家对selenium都很熟悉,但是有哪些测试工程师能对其原理了如指掌呢!只有学懂了原理,才能更加深入的学习。今天的博客我们一起来学习一下selenium的原理!
官网链接:https://www.selenium.dev/documentation/en/
Selenium是一个用于web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作,支持的浏览器包括包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括测试浏览器的兼容性(测试应用程序在不同浏览器 or 不同的操作系统上的兼容性)
特征:Selenium1.0:这个时候的selenium,使用的是JavaScript注入技术与浏览器打交道,需要Selenium RC启动一个Server,将操作Web元素的API调用转化为一段段Javascript,在Selenium内核启动浏览器之后注入这段Javascript,Javascript可以获取并调用DOM的任何元素,自如的进行操作。
但是这种Javascript注入技术的缺点是速度不理想,而且稳定性大大依赖于Selenium内核对API翻译成的Javascript质量高低。
Selenium2.0 = Selenium1.0 + WebDriver
Selenium3.0 = Selenium2.0 - Selenium RC
# 导入selenium之前要安装包:终端命令输入 pip install selenium
from selenium import webdriver
import logging
logging.basicConfig(level=logging.DEBUG) # 打印Debug日志
driver = webdriver.Chrome()
driver.get('https://www.baidu.com') # 南钢bass平台的url
输出如下-----------------
1、DEBUG:selenium.webdriver.remote.remote_connection:POST http://127.0.0.1:53695/session {"capabilities": {"firstMatch": [{}], "alwaysMatch": {"browserName": "chrome", "platformName": "any", "goog:chromeOptions": {"extensions": [], "args": []}}}, "desiredCapabilities": {"browserName": "chrome", "version": "", "platform": "ANY", "goog:chromeOptions": {"extensions": [], "args": []}}}
2、DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): 127.0.0.1:53695
3、DEBUG:urllib3.connectionpool:http://127.0.0.1:53695 "POST /session HTTP/1.1" 200 720
4、DEBUG:selenium.webdriver.remote.remote_connection:Finished Request
5、DEBUG:selenium.webdriver.remote.remote_connection:POST http://127.0.0.1:53695/session/fe78275c988e19763c3fdd367e971f36/url {"url": "https://www.baidu.com"}
6、DEBUG:urllib3.connectionpool:http://127.0.0.1:53695 "POST /session/fe78275c988e19763c3fdd367e971f36/url HTTP/1.1" 200 14
7、DEBUG:selenium.webdriver.remote.remote_connection:Finished Request
到这里想必大家应该很明白了原理了,那么我们也可以不使用selenium打开浏览器,直接请求接口调用浏览器。
如下:
‘’‘1、先进入驱动所在的目录,手动启动chromedirver.exe,命令 chromedriver.exe -port=12345’‘’ ‘’‘2、打卡浏览器,获取session’‘’ url_driver = 'http://localhost:'+ ’12345‘ +'/session' data_driver = {"capabilities": {"firstMatch": [{}], "alwaysMatch": { "browserName": "chrome", "platformName": "any", "goog:chromeOptions": { "extensions": [], "args": [] } } }, "desiredCapabilities": { "browserName": "chrome", "version": "", "platform": "ANY", "goog:chromeOptions": { "extensions": [], "args": [] } } } response = requests.post(url=url_driver,json=data_driver) sessionId = jsonpath.jsonpath(response.json(), '$..sessionId')[0] # 通过jsonpath来获取sessionId ‘’‘3、进入百度’‘’ # 拿到上面获取的session来请求百度 url_demo = 'http://localhost:'+‘12345’+'/session/'+sessionId+'/url' # 请求百度页面的接口参数 data_demo = { "url": 'https://www.baidu.com' } response_demo = requests.post(url=url_demo,json=data_demo)
好了!!浏览器也打开了,百度页面打开了,其他定位元素以及元素操作等都是通过调用API来实现的
图片来自官网
后续有关Selenium的内容会在后续博客一一介绍,包含元素定位,元素操作,等待方式等等!
以上内容有误处,麻烦与在下面评论,多多指教,相互学习。谢谢!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。