helium操作远程服务的浏览器

轩辕阳焱
2023-12-01
helium是对selenium的二次封装,对于web端自动化很多常用操作做的封装可以简化自动化的代码,比如登录页面中录入用户名,只需要命令: 
write("user12345", into="Username:")
但是,selenium中可以实现的功能,helium并不能完全支持。
比如,selenium中remote server的使用。
首先,介绍selenium的remote server服务:
关于这部分的功能,官方的说法是
Controls a browser by sending commands to a remote server.
This server is expected to be running the WebDriver wire protocol
as defined at
https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol
简单来讲,在服务器上启动selenium服务(下载selenium-server-standalone的jar包,并运行),在远端的服务会开启一个默认端口为4444(可指定其他端口)的服务允许其他机器访问
java -jar selenium-server-standalone-2.46.0.jar
15:56:28.220 INFO - Launching a standalone Selenium Server
15:56:28.298 INFO - Java: Oracle Corporation 25.241-b07
15:56:28.298 INFO - OS: Windows Server 2016 10.0 x86
15:56:28.313 INFO - v2.46.0, with Core v2.46.0. Built from revision 87c69e2
15:56:28.360 INFO - Driver class not found: com.opera.core.systems.OperaDriver
15:56:28.360 INFO - Driver provider com.opera.core.systems.OperaDriver is not registered
15:56:28.438 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub
15:56:28.438 INFO - Selenium Server is up and running
而通过访问远端服务http://远端服务ip:4444/wd/hub,并发送命令来控制远端服务的浏览器
以chrome浏览器为例,对应的remote server使用为:
driver = selenium.webdriver.remote.webdriver.WebDriver(command_executor=remote_service,
                                                       desired_capabilities=DesiredCapabilities.
                                                       CHROME)
其中remote_service为开启了服务的远端服务器的ip。
而heilum并不支持这种形式。
helium中start_chrome()或者start_firefox()默认调用的是本地driver。
如果helium要支持访问远端的浏览器并操作,可通过以下方式ser_driver()的方式:
driver = selenium.webdriver.remote.webdriver.WebDriver(command_executor=remote_service,
desired_capabilities=DesiredCapabilities.
CHROME)
set_driver(driver)

 类似资料: