Selenium使用已打开浏览器,断点调试

本文介绍了如何在Selenium自动化测试中进行断点调试,避免从头开始打开浏览器的耗时过程。通过理解Selenium WebDriver的工作原理,即作为HTTP服务端操控浏览器,我们可以利用已存在的浏览器会话进行调试。详细步骤包括下载浏览器驱动和服务端jar包,启动服务端,查看session管理,以及根据sessionId控制浏览器执行特定步骤。
摘要由CSDN通过智能技术生成
  • 需求

我们在进行selenium页面自动化测试时,是不是经常碰到需要反复的进行脚本调试,且调试的过程中不需要从场景的起始开始,只需要运行场景的某些步骤。对于初学者来说,可能只会从webdriver初始化开始,打开一个浏览器一步步的运行。对于一个场景有几十个步骤的情况,这样调试会非常耗时,且每次都需要重复的打开浏览器。

对于这样的耗时的调试,有没有一种办法可以进行断点调试,通过对selenium的源码做了深度刨析,发现是有方法可以解决以上情况。

  • 思路

首先要知道selenium webdriver的工作原理,当我们用webdriver初始化一个浏览器窗口时,实际上是创建了一个浏览器的调试服务端,而webdriver的api是客户端。

当运行selenium的每个脚本,其实都会创建一个HTTP请求到服务端,HTTP Server接收到请求后根据请求来具体操控对应的浏览器做出响应,执行具体的动作,并将执行的结果返回给HTTP Server,然后server再将结果返回给脚本,webdriver在http协议基础上又有些许改动,增加了更加明确的响应状态码,如NoSuchElement,ElementNotVisible等。

当我们知道了webdriver原理本质是http协议后,此时我们要去操控浏览器其实就是获取session的过程,根据官方文档的指引,我们首先用命令java -jar selenium-server-standalone-3.14.0.jar,建立服务端,再根据相应接口操控浏览器。

  • 实现

 1、下载相应的浏览器驱动和服务端jar包

Chrome: https://sites.google.com/a/chromium.org/chromedriver/downloads
Edge: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefox: https://github.com/mozilla/geckodriver/releases
Safari: https://webkit.org/blog/6900/webdriver-support-in-safari-10/

jar: http://selenium-release.storage.googleapis.com/3.14/selenium-server-standalone-3.14.0.jar

2、服务端启动

java -jar selenium-server-standalone-3.14.0.jar

 浏览器打开:http://localhost:4444/wb/hub/static/resource/hub.html,session管理

3、获取可用的浏览器

用sessions接口获取所有已启动的调试窗口,找到相应的sessionId。

4、根据sessionId来操控浏览器

HTTP Method Path Summary
GET /status Query the server's current status.
POST /session Create a new session.
GET /sessions Returns a list of the currently active sessions.
GET /session/:sessionId Retrieve the capabilities of the specified session.
DELETE /session/:sessionId Delete the session.
POST /session/:sessionId/timeouts Configure the amount of time that a particular type of operation can execute for before they are aborted and a
POST /session/:sessionId/timeouts/async_script Set the amount of time, in milliseconds, that asynchronous scripts executed by /session/:sessionId/execute_async are permitted to run before they are aborted and a
POST /session/:sessionId/timeouts/implicit_wait Set the amount of time the driver should wait when searching for elements.
GET /session/:sessionId/window_handle Retrieve the current window handle.
GET /session/:sessionId/window_handles Retrieve the list of all window handles available to the session.
GET
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值