标签:mamicode 文本 win ted _id art 令行 lease branch
Selenium是一款浏览器自动化测试框架,基于Webdriver协议。
从本质上来说:
seleniumwebdriver.remote.remote_connection中代码如下图:
既然是HTTP接口,那么不使用Selenium,使用Postman或requests便能完成浏览器的操作。
如果你的chromedriver已经放置在环境变量路径中,直接在命令行输入chromedriver
即可启动服务,输出信息如下:
$ chromedriver
Starting ChromeDriver 79.0.3945.36 (3582db32b33893869b8c1339e8f4d9ed1816f143-refs/branch-heads/3945@{#614}) on port 9515
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
默认端口号为9515,即接口地址为:http://127.0.0.1:9515
Webdriver协议中一般使用POST请求, 数据使用JSON格式发送,即使不需要参数也要传递{}的JSON数据。
新建会话的接口及数据如下,新建会话时同capabilities指定要启动浏览器的选项。
POST http://127.0.0.1:9515/session
{
"capabilities": {"browserName": "chrome"}
}
Postman中的请求设置如下图所示:
响应中会返回一个sessionId,如:06e32bb38efb7e182bd20dc5c975d3ae,这个sessionId就代表这个浏览器(会话)。
接口及数据为:
POST http://127.0.0.1:9515/session/06e32bb38efb7e182bd20dc5c975d3ae/url
{"url": "https://www.baidu.com/"}
接口及数据为:
POST http://127.0.0.1:9515/session/06e32bb38efb7e182bd20dc5c975d3ae/window/maximize
{}
接口及数据为:
POST http://127.0.0.1:9515/session/06e32bb38efb7e182bd20dc5c975d3ae/element
{"using": "css selector", "value": "#kw"}
这里的using支持以下5种:
Selenium中的find_element_by_id(), find_element_by_name()和find_element_by_class_name()实际上用的是css selector。
执行后响应中会返回元素id,如:eef207e2-59c1-429d-9425-f1fd2da93c35,代表这个元素。
输入操作接口数据为:
POST http://127.0.0.1:9515/session/06e32bb38efb7e182bd20dc5c975d3ae/element/eef207e2-59c1-429d-9425-f1fd2da93c35/value
{"text": "大赢家"}
注意session/后面的是sessionId, element/后面是元素id
执行后浏览器显示如下图所示:
请求数据为:
DELETE http://127.0.0.1:9515/session/06e32bb38efb7e182bd20dc5c975d3ae
{}
import requests
# 新建会话
res_dict = requests.post(‘http://127.0.0.1:9515/session‘,
json={"capabilities": {"browserName": "chrome"}}).json()
sessionId = res_dict.get(‘value‘).get(‘sessionId‘)
# 打开百度
requests.post(f‘http://127.0.0.1:9515/session/{sessionId}/url‘,
json={"url": "https://www.baidu.com/"})
# 最大化窗口
requests.post(f‘http://127.0.0.1:9515/session/{sessionId}/window/maximize‘,
json={})
# 定位搜索框
res_dict = requests.post(f‘http://127.0.0.1:9515/session/{sessionId}/element‘,
json={"using": "css selector", "value": "#kw"}).json()
elementId = list(res_dict.get(‘value‘).values())[0]
# 输入文本
requests.post(f‘http://127.0.0.1:9515/session/{sessionId}/element/{elementId}/value‘,
json={"text": "大赢家"})
# 退出浏览器
requests.delete(f‘http://127.0.0.1:9515/session/{sessionId}‘,
json={})
使用Postman或requests结合chromedriver模拟Selenium操作浏览器
标签:mamicode 文本 win ted _id art 令行 lease branch
原文地址:https://www.cnblogs.com/superhin/p/12601086.html