使用Postman或requests结合chromedriver模拟Selenium操作浏览器

Selenium是一款浏览器自动化测试框架,基于Webdriver协议。

从本质上来说:

  • webdriver是一套接口标准,使用标准的HTTP RESTful接口,使用JSON格式传递数据。
  • chromedriver是实现该标准的Chrome浏览器的一套驱动服务。
  • Selenium实际上是对各种接口操作的封装

seleniumwebdriver.remote.remote_connection中代码如下图:

既然是HTTP接口,那么不使用Selenium,使用Postman或requests便能完成浏览器的操作。

启动webdriver接口服务

如果你的chromedriver已经放置在环境变量路径中,直接在命令行输入chromedriver即可启动服务,输出信息如下:

$  chromedriver
Starting ChromeDriver 79.0.3945.36 (3582db32b33893869b8c1339e8f4d9ed1816f143-refs/branch-heads/[email protected]{#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

使用Postman操作浏览器

Webdriver API参考

新建浏览器会话

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种:

  • "css selector"
  • "tag name"
  • "xpath"
  • "link text"
  • "partial link text"

Selenium中的find_element_by_id(), find_element_by_name()和find_element_by_class_name()实际上用的是css selector。

  • id="kw":相当于 css selector "#kw"
  • class_name="card":相当于 css selector ".card"
  • name="info":相当于 css selector "[name=info]"

执行后响应中会返回元素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
{}

使用requests自动操作浏览器

  1. 手动启动chromedriver
  2. 编写请求脚本,如下。
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={})

原文地址:https://www.cnblogs.com/superhin/p/12601086.html

时间: 2024-11-10 05:51:13

使用Postman或requests结合chromedriver模拟Selenium操作浏览器的相关文章

selenium操作浏览器

package seleniumLearn1; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; /** * 操作浏览器 * 1.浏览器窗口最大化 * 2.浏览器

selenium操作浏览器的基本方法

前言前面已经把环境搭建好了,这从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可视化工具,我们要学的是webdriver框架的API.本篇主要讲如何用Python调用webdriver框架的API,对浏览器做一些常规的操作,如打开.前进.后退.刷新.设置窗口大小.截屏.退出等操作.一.打开网站1.第一步:从selenium里面导入webdriver模块2.打开Firefox浏览器(Ie和Chrome对

windows下使用selenium操作浏览器问题记录

问题 :执行程序代码报错: WebDriverException:Message:'geckodriver'executable needs to be in Path 或者 selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH. 解决,geckodriver是一原生态的第三方浏览器,对于selenium3.x版本都会使用geckodriver来驱动

java selenium (十) 操作浏览器

本篇文章介绍selenium 操作浏览器 阅读目录 浏览器最大化 前进,后退, 刷新 public static void testBrowser(WebDriver driver) throws Exception { driver.get("http://www.cnblogs.com/tankxiao"); Thread.sleep(5000); // 浏览器最大化 driver.manage().window().maximize(); driver.navigate().to

使用Selenium对浏览器进行后退、前进和刷新操作

使用Selenium操作浏览器,有时需要进行后退.前进和刷新操作,下面是示例代码: import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class SeleniumTest { public static void main(String[] args) { System.setProperty("webdriver.firefox.bin", &q

selenium+requests进行cookies保存读取操作

看这篇文章之前大家可以先看下我的上一篇文章:cookies详解 本篇我们就针对上一篇来说一下cookies的基本应用 使用selenium模拟登陆百度 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import ex

selenium:能够模拟人类打开浏览器的爬虫利器

介绍 selenium相当于是一个机器人,可以模拟人类登陆浏览器的行为,比如点击.填充数据.删除cookie等等.Chromedriver是一个驱动Chrome的程序,使用它才可以驱动浏览器,其实Chromedriver之前是用来做自动化测试的,但是发现很适合爬虫.当然这里的是Chromedriver,不同的浏览器有不同的driver,但是这里我们只介绍Chrome.毕竟谷歌浏览器在浏览器这一层面上基本算是主宰天下了.关于selenium一般是为了获取动态数据的,对于那些使用ajax技术的网站,

[python]利用selenium模拟用户操作抓取天猫评论数据

准备: python3.5 安装selenium包 第一种方法: cmd里输pip install selenium,但是经常报错 第二种方法: 下载安装包-cmd进入解压路径-python setup.py install-报错permission denied-右键安全更改报错文件夹权限为完全控制-再次安装成功unknown error: unable to discover open pages-下载chromedriver放在环境变量目录下测试自动打开百度时提示"您使用的是不受支持的命令

Selenium Python浏览器调用:伪浏览器

WebDriver驱动介绍 因为移动端的driver目前没有接触,所以主要介绍PC端driver,PC端的driver都是基于浏览器的,主要分为2种类型: 一种是真实的浏览器driver:safari.firefox.ie.chrome等 比如:safari.firefox.ie.chrome都是通过浏览器原生组件来调用浏览器的原生API,这些driver都是直接启动并通过调用浏览器的底层接口来驱动浏览器的,因此具有最真实的用户场景模拟,主要用于进行web的兼容性测试使用. 一种是伪浏览器dri