1、为啥要有Remote Webdriver?
selenium 允许你在远程计算机上自动化浏览器,如果它们上面运行着 Selenium Grid。执行代码的计算机被称为客户端计算机,而带有浏览器和驱动程序的计算机被称为远程计算机,有时也称为终节点。为了将 Selenium 测试定向到远程计算机,你需要使用一个 Remote WebDriver 类,并传递包含该计算机上 Grid 端口的 URL。
2、Selenium Grid是什么 ?
Selenium Grid 允许通过将客户端发送的命令路由到远程浏览器,在远程机器上执行 WebDriver 脚本。
使用Selenium Grid好处是:
- 提供在多台机器上并行运行测试的简便方式
- 允许在不同的浏览器版本上进行测试
- 实现跨平台测试
3、应用实例
在这个例子中,我们使用 webdriver.Remote 创建了一个远程 WebDriver 实例,指定了远程 Selenium Server 的地址(remote_url)和浏览器的期望配置(capabilities)。然后,我们像使用本地 WebDriver 一样使用这个远程 WebDriver 执行测试。
确保替换 <remote_ip> 和 <remote_port> 为你实际使用的远程 Selenium Server 的 IP 地址和端口号。
首先,确保你已经安装了 Selenium 和浏览器驱动,并启动 Selenium Server。你可以下载 Selenium Server JAR 文件并在本地运行:
java -jar selenium-server-standalone-<version>.jar
下载地址:https://www.selenium.dev/downloads/
接下来,使用 python 编写一个测试脚本,连接到远程的 Selenium Server,然后在远程浏览器中执行测试。
from selenium import webdriver
from selenium.webdriver.***mon.keys import Keys
from selenium.webdriver.***mon.desired_capabilities import DesiredCapabilities
# 定义远程浏览器的地址
remote_url = "http://<remote_ip>:<remote_port>/wd/hub"
# 定义所需的浏览器和版本
capabilities = DesiredCapabilities.CHROME.copy()
capabilities['version'] = '94.0'
# 创建远程 WebDriver 实例
driver = webdriver.Remote(***mand_executor=remote_url, desired_capabilities=capabilities)
try:
# 打开网页
driver.get("https://www.example.***")
# 在搜索框中输入文本
search_box = driver.find_element("name", "q")
search_box.send_keys("Selenium WebDriver")
# 模拟按下 Enter 键
search_box.send_keys(Keys.RETURN)
# 等待一段时间,以便查看搜索结果
driver.implicitly_wait(5)
# 打印页面标题
print("Page Title:", driver.title)
finally:
# 关闭浏览器窗口
driver.quit()