seleniuim chromedriver 固定chrome浏览器端口以及远程调试(windows & linux)python

原理讲解:python中 selenium 调用webdriver 启动浏览器爬取数据,最为简单的是webdriver直接驱动chrome无界面模式。但是想要浏览器稳定些,可以在页面长期挂着一个浏览器,然后driver 通过端口连接,进而获取数据,接下来通过chrome浏览器,chromedriver进行实战。

#安装好chrome 以及对应版本的chromedriver

1、页面启动chrome 并且指定端口13888(任意未占用的端口)

(windows )

chrome.exe --remote-debugging-port=13888

(linux)

chrome --no-sandbox --remote-debugging-port=13888  --user-data-dir=/data/chrome/13888 --ignore-certificate-errors

2、selenium chromedriver 连接 两种方法

(1)chromedriver 连接 监听始终端口13888的chrome 浏览器

#chromedriver 连接 监听始终端口13888的chrome 浏览器
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument('--remote-debugging-port=13888')
driver = webdriver.Chrome(options=chromeOptions)

(2)chromedriver 连接 已经启动的chrome 端口为13888的chrome 浏览器

#chromedriver 连接 已经启动的chrome 端口为13888的chrome 浏览器
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:13888")
driver = webdriver.Chrome(options = chrome_options)

3、数据获取 (正常webdriver的操作)

driver.get('https://www.baidu.com')

4、远程webdriver

根据不同的业务场景,有些业务需要使用到远程webdriver,在启用chrome浏览器的机子上,启用远程webdriver

./chromedriver --port=13889 --whitelisted-ips --enable-webgl --no-sandbox --disable-dev-shm-usage --disable-gpu --allowed-origins="*"

--allowed-origins="*"指定所有ip可以访问

--no-sandbox 一般是linux系统中会用到

--disable-gpu 指定不是用gpu加速

5、连接远程webdriver

chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument('--remote-debugging-port=13888')
driver = webdriver.Remote(command_executor='http://ip:13889',options=chromeOptions)

连接后 就可以经行正常的driver请求和操作了。

您可以使用 Selenium Grid 进行远程连接和分布式测试。Selenium Grid 是 Selenium 的组件,它允许您在不的机器上同时运行测试用例,并将测试任务分配给不同的浏览器实例。 要使用 Selenium Grid,您需要按照以下步骤进行操作: 1. 安装 Java Development Kit(JDK):Selenium Grid 是使用 Java 编写的,因此您需要安装 JDK。 2. 下载 Selenium Server:您可以从 Selenium 官方网站下载最新版本的 Selenium Server JAR 文件。 3. 启动 Selenium Hub:Selenium Hub 是 Grid 的中心节点,它负责接收来自客户端的测试请求并将其分配给可用的节点。您可以使用以下命令启动 Selenium Hub: ``` java -jar selenium-server-standalone.jar -role hub ``` 4. 启动 Selenium Node:Selenium Node 是 Grid 的节点,它负责实际运行测试用例。您可以在不同的机器上启动多个 Selenium Node,以便并行运行测试。您可以使用以下命令启动 Selenium Node: ``` java -Dwebdriver.chrome.driver=chromedriver -jar selenium-server-standalone.jar -role node -hub http://localhost:4444/grid/register ``` 其中,`-Dwebdriver.chrome.driver` 指定 Chrome 驱动程序的路径,`-hub` 指定 Selenium Hub 的 URL。 5. 运行测试用例:现在您可以在客户端中编写测试用例,并将其配置为通过 Selenium Grid 运行。在测试用例中,您需要指定远程节点的 URL,以便将测试任务分配给正确的节点。 以下是一个使用 PythonSelenium 的示例代码片段,用于远程连接到 Selenium Grid 并运行测试: ```python from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities # 配置远程节点的 URL remote_url = "http://<node_ip>:<node_port>/wd/hub" # 配置所需的浏览器 capabilities = DesiredCapabilities.CHROME.copy() capabilities['platform'] = 'WINDOWS' # 连接到远程节点 driver = webdriver.Remote(remote_url, desired_capabilities=capabilities) # 执行测试操作 driver.get("https://www.example.com") ``` 请将 `<node_ip>` 替换为远程节点的 IP 地址,`<node_port>` 替换为远程节点的端口号。 这样,您就可以使用 Selenium Grid 进行远程连接浏览器并进行分布式测试了。希望对您有帮助!如有任何问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值