Selenium是如何操纵浏览器的? (3)

官方文档称为:找到的元素的WebElement JSON对象,表示页面上的DOM元素,同时服务器分配给ELEMENT的值是不透明的(随机的) 这个ELEMENT的值会在针对该元素发出的所有后续命令中使用。


4、点击”深圳-逸遥“博客 第一篇博文的标题

4.1 构造请求

请求方式 :POST 请求地址 ::9515/session/:sessionId/element/:id/click 注意: 上述地址中的 ":sessionId" 要用启动浏览器的请求返回结果中的sessionId的值 :id 要用元素定位请求后返回ELEMENT的值 例如:我刚刚发送请求,启动浏览器,返回结果中"sessionId": "b2801b5dc58b15e76d0d3295b04d295c" 元素定位,返回ELEMENT的值"0.11402119390850629-1" 然后我构造 点击页面元素的请求地址 请求地址::9515/session/b2801b5dc58b15e76d0d3295b04d295c/element/0.11402119390850629-1/click 请求body :{"id": "0.11402119390850629-1", "sessionId": "b2801b5dc58b15e76d0d3295b04d295c"}

4.2 使用python requests 向 ChromeDriver发送请求

#encoding:utf8 import requests url = 'http://localhost:9515/session/b2801b5dc58b15e76d0d3295b04d295c/element/0.11402119390850629-1/click' pars ={"id": "0.5930642995574296-1", "sessionId": "b2801b5dc58b15e76d0d3295b04d295c"} r = requests.post(url,json=pars) print(r.json())


浏览器导航到“深圳-逸遥”首页的第一篇博文

image

4.3 查看请求返回的结果

{'sessionId': 'b2801b5dc58b15e76d0d3295b04d295c', 'status': 0, 'value': None}


文章末尾再炒一下旧饭

对于每个Selenium命令,都会创建一个HTTP请求并将其发送到浏览器驱动程序

每一个命令的执行结果都会返回给自动化代码

响应状态代码 status 等于0 ,即表示命令执行成功

ChromeDirver创建session时打开了浏览器

Selenium代码和浏览器驱动的交互都根据ChromeDriver创建的sessionId


附带上述操作相关的接口文档——selenium webdriver JsonWireProtocol


参考文章

乙醇 - selenium是如何启动浏览器的

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydyxj.html