1. 驱动地址:
a. chromedriver:https://googlechromelabs.github.io/chrome-for-testing/
b. https://registry.npmmirror.com/binary.html?path=chromedriver/
下载好的驱动一般放在Python初始文件夹下,例如:D:\Python3.8
2. selenium原理:
Selenium 是一个用于自动化测试 Web 应用程序的工具集
a. 浏览器驱动(WebDriver)
ⅰ. Selenium 通过与各种主流浏览器的驱动程序进行通信来控制浏览器的行为。
ⅱ. 例如,对于 Chrome 浏览器有 ChromeDriver,对于 Firefox 有 GeckoDriver 等。
b. 发送指令和接收响应
ⅰ. 它将用户编写的测试脚本中的操作指令(如点击、输入、获取元素等)转化为浏览器能够理解的命令。
ⅱ. 浏览器执行这些命令后,将结果返回给 Selenium 。
c. 页面元素定位
ⅰ. Selenium 提供了多种方式来定位网页中的元素,例如通过 ID、Name、Class Name、CSS 选择器、XPath 等。
ⅱ. 一旦定位到元素,就可以对其进行相应的操作。
ⅲ. 例如,如果要点击一个具有特定 ID 的按钮,Selenium 会使用相应的定位方法找到这个按钮元素,然后发送点击指令。
ⅳ. https://blog.csdn.net/baidu_28340727/article/details/126913997
d. 模拟用户行为
ⅰ. 能够模拟真实用户在浏览器中的各种操作,如鼠标点击、键盘输入、页面滚动等
e. 测试断言
ⅰ. 可以对页面的内容、元素的属性、预期结果等进行断言,以判断测试是否通过
总的来说,Selenium 利用浏览器驱动与浏览器进行交互,通过定位元素和模拟用户操作来实现对 Web 应用程序的自动化测试和控制。
3. selenium源代码实现原理:
a. Selenium 客户端(使用 Python 等语言编写的自动化测试脚本)首先初始化一个服务(service),并借助 WebDriver 来启动浏览器驱动程序(如 chromedriver.exe)。在此步骤中,服务的初始化是为后续与浏览器驱动的通信做好准备,而启动特定的浏览器驱动程序则是为了能够控制相应的浏览器。
b. 接着,通过 RemoteWebDriver 向浏览器驱动程序发送 HTTP 请求。浏览器驱动程序会对这些请求进行解析,然后打开浏览器,并获取一个唯一的 session ID。后续若要对该浏览器进行多操作,都需要携带这个 ID 以确保请求的准确性和关联性。这里的 HTTP 请求是客户端与驱动程序之间通信的方式,而 session ID 则用于标识和跟踪特定的浏览器会话。
c. 浏览器成功打开后,会绑定特定的端口,并将启动后的浏览器视作 WebDriver 的远程服务器(remote server)。此过程使得浏览器能够接收来自客户端的指令,并准备执行相应的操作。
d. 当浏览器打开后,所有的 Selenium 操作(如访问特定地址、查找元素等)都会通过 RemoteConnection 连接到远程服务器。然后,使用 execute 方法向远程服务器发送指令(send a command to the remote server),该方法内部会调用 _request 方法来发送一个 HTTP 请求给远程服务器(send an HTTP request to the remote server)。这一系列的操作机制确保了测试脚本能够精确地控制浏览器的行为。
e. 浏览器接收到请求的内容后,会执行对应的动作。浏览器根据接收到的指令执行具体的操作,如加载页面、点击元素、填写表单等。
f. 最后,浏览器会将执行动作的结果通过浏览器驱动程序返回给测试脚本。
这样,测试脚本就能够获取到浏览器操作的结果,从而进行后续的判断和处理,例如验证页面元素是否存在、内容是否正确等。
综上所述,Selenium 通过这样的一系列步骤实现了对浏览器的自动化控制和测试。
服务器端需要维护浏览器的Session,客户端首次发送请求的字符串是’/session/
s
e
s
s
i
o
n
I
d
/
u
r
l
′
。服务器端将根据
u
r
l
打开对应的
u
r
l
地址,同时将
sessionId/url'。服务器端将根据url打开对应的url地址,同时将
sessionId/url′。服务器端将根据url打开对应的url地址,同时将sessionId解析成真实的值。然后返回给客户端。以后客户端再向浏览器发送请求时,将会携带session值一起发送。
https://cloud.tencent.com/developer/article/2033963