python-selenium端口启动浏览器

该代码示例展示了如何利用Python的Selenium库启动Chrome浏览器进行自动化测试。它选择一个随机端口,检查端口是否被占用,配置Chrome选项如忽略SSL错误,设置调试器地址,并通过chromedriver来控制浏览器。同时,代码还包含了处理页面加载超时、禁用webdriver检测以及在测试完成后如何通过PID结束相关进程的操作。
摘要由CSDN通过智能技术生成

备忘录

驱动下载网站
最新的 https://googlechromelabs.github.io/chrome-for-testing/ ,
历史的 https://chromedriver.storage.googleapis.com/index.html

pip  install  selenium==4.6 

# -*- coding:utf-8 -*-
import os
import random

from selenium import webdriver
from selenium.webdriver.chrome.service import Service


def use_chrome(used_port):
    """
    启用chrome端口,检测当前端口是否被占用,占用则更换新端口,启动chrome.
    :return: 使用的端口 used_port
    """
    find_port = os.popen('netstat -ano|findstr {}'.format(used_port)).readlines()
    while str(used_port) in find_port:
        print(used_port, '端口已被占用,正在更换端口')
        used_port += 1
        find_port = os.popen('netstat -ano|findstr {}'.format(used_port)).readlines()
    os.system(r'start chrome.exe --remote-debugging-port={} --user-data-dir="C:\dpp\chrome"'.format(used_port))
    print('使用端口:', used_port)
    return used_port


def check_pid(used_port):
    """
    查看当前进行的pid编号
    :return: pid进行编号
    """
    used_port = '127.0.0.1:' + str(used_port)
    find_port = os.popen('netstat -ano|findstr {}'.format(used_port)).readlines()
    for ele in find_port:
        if used_port in ele:
            used_pid = ("".join(ele).split('       ')[-1])
            return used_pid


used_port = use_chrome(random.randint(9222, 9552))
# --- 进行chrome的配置
options = webdriver.ChromeOptions()

options.add_argument("service_args = ['–ignore-ssl-errors = true', '–ssl-protocol = TLSv1']")
# --- chrome的文件路径
options.binary_location = r'C:\Program Files\Google\Chrome\Application\chrome.exe'
# ---- chrome进行端口接管调用
options.add_experimental_option("debuggerAddress", "127.0.0.1:{}".format(used_port))
options.add_argument('-incognito')
# --- chromedriver的文件路径
chrome_driver = Service(r"C:\chromedriver.exe")
# --- 引入chrome配置
driver = None
try:
    driver = webdriver.Chrome(options=options, service=chrome_driver)
    # --- 设置宽和高位置
    driver.maximize_window()
except Exception as err:
    print('开启浏览器错误:\n', ValueError(err))
# --- 拦截webdriver检测代码
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",
                       {"source": """
                  Object.defineProperty(navigator, 'webdriver', {
                  get: () => undefined
                  })
                  """})
# 超时访问
try:
    driver.set_page_load_timeout(9)
except Exception as e:
    pass
# 访问
driver.get('http://www.baidu.com')

input("1111")

#  获取进程
pid = check_pid(used_port)

os.system('chcp 65001')
#  杀死pid  可以用  cmd执行
os.system(fr"taskkill -t -f /pid {pid} ")

# 很早写的 selenium==4.6  也能用


  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用 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 进行远程连接浏览器并进行分布式测试了。希望对您有帮助!如有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值