Selenium-骚操作

想象一下你有很多测试需要在不同的浏览器和操作系统上运行。但你可能没有那么多机器或者资源来同时运行这些测试。Selenium Grid允许你将多台机器连接在一起,形成一个大的“测试工厂”。这样,你就可以利用这些机器的资源来同时运行多个测试了。最重要的是由于Selenium Grid是一个独立的系统,因此你可以很容易地对其进行维护和升级。比如,你可以添加新的功能、修复已知的bug、更新浏览器版本等,而不需要对每个测试环境都进行手动操作。

1: 启动Selenium Grid Hub

这里假设服务器的IP为 10.10.1.111 为例
docker pull selenium/hub
docker run -d -p 4444:4444 --name selenium-hub selenium/hub
这将启动Selenium Grid的Hub服务,并将其监听的4444端口映射到宿主机的相同端口。

2: 代码链接Selenium Grid

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

# 配置要连接的浏览器
capabilities = {
    'browserName': 'chrome',  # 或 'firefox' 对于Firefox
}

# 创建远程WebDriver实例,连接到Grid Hub
grid_url = 'http://localhost:4444/wd/hub'
driver = webdriver.Remote(command_executor=grid_url, desired_capabilities=capabilities)

try:
    driver.get('https://www.example.com')
    # 执行你的测试逻辑
    print(driver.title)
finally:
    driver.quit()

3: 本地链接Selenium Grid

现在我们可通过自动化代码连接到远程服务器上面的Selenium Grid ,我们也可以通过本地的浏览器来连接。
打开浏览器输入: http://10.10.1.111:4444 ,点击某个会话图标,密码均为 secret
selenium.gif

4: 其他参数

--max-session=1   设置当前容器最多支持打开的浏览器数量
--shm-size=2g   为容器设置共享内存的大小
-e SE_SCREEN_WIDTH=1920 设置浏览器窗口的默认宽度为1920像素。
-e SE_SCREEN_HEIGHT=1058 设置浏览器窗口的默认高度为1058像素。
-e SE_NODE_MAX_SESSIONS=8 限制每个节点最多处理8个会话。