Robot Framework/Selenium 中使用 BrowserMobProxy 将 URL 列入黑名单?

2023-11-29

我使用 RobotFramework 和 Selenium 库为各种网站编写自动化测试用例。我遇到了一个问题,由于第三方 URL 加载缓慢,某些页面需要永远加载,我想阻止它们以加快测试执行速度。

但是,我坚持通过 Robot Framework 中的 BrowserMob 实现该解决方案。有人可以帮忙吗?

到目前为止,我有这个代码:

Start Browser
    ## Init BrowserMob Proxy
    ${BMPATH}    Join Path    ${EXECDIR}    browsermob-proxy-2.1.4    bin    browsermob-proxy.bat
    &{bmphost}    Create Dictionary    address=127.0.0.1    port=7070
    Start Local Server    ${BMPATH}
    # Create dedicated proxy on BrowserMob Proxy
    &{host}    Create Dictionary    address=127.0.0.1    port=7070
    ${BrowserMob_Proxy}=    Create Proxy    ${host}
    #Blacklist URLS
    Blacklist    https://.*\\.google.com/.*    404
    ## Configure Webdriver to use BrowserMob Proxy
    ${options}=    Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver
    Call Method    ${options}    add_argument    --proxy\=127.0.0.1:7070
    #${proxy1}=    Evaluate    sys.modules['selenium.webdriver'].Proxy()    sys, selenium.webdriver
    #${proxy1.http_proxy}=    Set Variable    localhost:8888
    Create WebDriver    Chrome    chrome_options=${options}    #proxy=${BrowserMob_Proxy}
    Go to    https://www.google.com

目标是翻译这个 selenium/java 代码:

private WebDriver initializeDriver() throws Exception {
    // Start the server and get the selenium proxy object
    ProxyServer server = new ProxyServer(proxy_port);  // package net.lightbody.bmp.proxy

    server.start();
    server.setCaptureHeaders(true);
    // Blacklist google analytics
    server.blacklistRequests("https?://.*\\.google-analytics\\.com/.*", 410);
    // Or whitelist what you need
    server.whitelistRequests("https?://*.*.yoursite.com/.*. https://*.*.someOtherYourSite.*".split(","), 200);

    Proxy proxy = server.seleniumProxy(); // Proxy is package org.openqa.selenium.Proxy

    // configure it as a desired capability
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability(CapabilityType.PROXY, proxy);

    // start the driver   ;
    Webdriver driver = new FirefoxDriver(capabilities);

    return driver;

我现在拥有的代码创建了服务器、代理并打开了 Chrome 浏览器,但无法将 google.com 列入黑名单并无论如何打开该页面。尝试了多个正则表达式,都失败了,但我认为错误是在此之前的某个地方发生的,无论是创建代理/服务器的方式还是将 URL 列入黑名单的方式都不正确。

有人在射频领域成功实施过这个解决方案吗?有人能告诉我我错过了什么吗?

Thanks


对于任何可能需要这个的人,解决方案如下:

Start Browser
    [Documentation]    Start browser
    Set Selenium Implicit Wait    10
    ${BMPATH}    Join Path    ${EXECDIR}    browsermob-proxy-2.1.4    bin    browsermob-proxy.bat
    Start Local Server    ${BMPATH}
    ## Create dedicated proxy on BrowserMob Proxy
    &{host}    Create Dictionary    port=7070  
    ${BrowserMob_Proxy}=    Create Proxy    ${host}
    Blacklist    .*\/\/.*google.*    200
    ## Configure Webdriver to use BrowserMob Proxy
    ${options}=    Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver
    Call Method    ${options}    add_argument    --start-maximized
    Call Method    ${options}    add_argument    --proxy-server\=localhost:7070
    Create WebDriver    Chrome    chrome_options=${options}

这将最大化 Chrome 浏览器并通过 BMP 路由流量。 黑名单行中的正则表达式意味着它将阻止所有包含“google”的 URL 并返回状态 200(这可以根据您的意愿进行更改)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Robot Framework/Selenium 中使用 BrowserMobProxy 将 URL 列入黑名单? 的相关文章

随机推荐

  • 使用复合聚集索引时,SQL Server 是否会跳叶?

    考虑以下复合聚集索引 CREATE UNIQUE CLUSTERED INDEX ix mytable ON mytable a b 显然 一个单独的索引b将使搜索的特定值b faster 但是 如果单独的索引b is not就业 在我看来
  • 有人可以解释一下这个 bash 结束时符号的内部工作原理吗:“_ {} \;”

    我在 shell 中运行以下命令来批量转换 HEIC文件到 JPG文件 命令成功 但是有一部分我不明白 find name HEIC exec sh c magick convert 1 1 HEIC JPG 显然 分配行为find结果到
  • 带属性的 python 枚举

    考虑 class Item def init self a b self a a self b b class Items GREEN Item a b BLUE Item c d 有没有办法使简单枚举的思想适应这种情况 看这个问题 理想情
  • 在管理面板中获取产品 ID

    如何在管理面板 目录 管理产品 选项卡中获取当前产品ID 我有一个自定义产品选项卡 但不知道如何获取当前产品 ID 在前端我会做这样的事情 如果你看Mage Adminhtml Catalog ProductController您将两次看到
  • Keycloak 9.0.2:缺少脚本映射器

    使用 keycloak 9 0 2 我们必须在客户端中使用脚本映射器来添加标头请求中的特定声明 但映射器类型中缺少脚本映射器 这是我们的 docker compose 文件的摘录 version 3 4 services keycloak
  • 将网络接口绑定到 Apache httpclient

    我在有两个网卡的机器上使用 Apache HttpClient 我找不到如何绑定 HttpClient 以仅使用其中一个网卡 我找到了一些解决方案 但它们现在都已贬值 我正在使用 Apache HttpClient 4 5 2 是否有使用
  • 制作具有多个 y 轴的条形图

    我有一些数据想用条形图表示 AAA 2 3 1 5 3 5 3 3 1 5 3 1 8 3 5 3 2 8 figure bar 1 2 AAA BarWidth 1 但我想对每一行的前三个条使用一个 y 轴AAA第四个则不同 我无法使用p
  • Objective-C 中的 alloc、init 和 new [重复]

    这个问题在这里已经有答案了 一本关于 iPhone 编程的书实例化了这样的类 Class alloc init 另一本关于 Objective C 的书是这样写的 Class new 有什么不同 new字面意思是这样实现的 id new r
  • 比较 Swift 中的 AnyObject

    我在将此 Objective C 代码移植到 Swift 时遇到问题 该代码必须按给定的顺序对目录的内容进行排序property NSArray contents fileManager contentsOfDirectoryAtURL d
  • junit.framework.AssertionFailedError:在 xyz 包中找不到测试

    当我尝试从 ANT 任务运行 Junits 时 出现此错误 使用 eclipse 启动器它工作正常 junit 版本为 4 9 ANT 版本为 1 7 令人惊讶的是它给出了 junit framework AssertionFailedEr
  • 警报转义 Perl 'eval' 块

    我有一个 Perl 脚本 可以自动从各种来源下载内容 它在一个eval块与alarm这样 如果时间太长 尝试就会超时 eval alarm 5 my res ua gt request req status res gt is succes
  • UWP / Visual Studio:如何制作不同的构建变体?

    我需要为我的 UWP 应用程序提供三种不同的构建变体 风格 以便可以并行安装 一种用于生产 一种用于测试 一种用于开发 显然 它们需要共享相同的代码库 但具有不同的常量 例如后端 URL 和 API 密钥 在 Android Studio
  • pyqt:如何在外部变量值更改时动态更新小部件属性?

    I have class Ui MainWindow object 创建一个带有进度条的窗口并且class OtherClass object 包含局部 int 变量循环递增的方法 如何将局部变量值的变化与进度条值的变化联系起来 mainG
  • 将 MVC 的 AuthorizeAttribute 与多组角色一起使用?

    我想做的是对操作处理程序进行两级角色检查 例如 要求用户至少属于以下组之一 SysAdmins ManagersAND至少属于以下组之一 人力资源 薪资 高管 最初的猜测是这可能是做到这一点的方法 但我认为不是 Authorize Role
  • 将http请求标头添加到href链接[重复]

    这个问题在这里已经有答案了 我有一个简单的href来自一些的链接html a href www google com Apparently you can find things here a 但我想在请求中添加http请求头 这可能吗 除
  • 应用程序停止生成登录 cookie

    我已经寻找这个问题的答案有一段时间了 但问题似乎相当复杂 我正在努力寻找答案 我是一名在一家初创公司工作的初学者软件开发人员 刚刚完成了供多个用户使用的第一个版本系统 本地测试软件没有问题 但是自从将软件发布到iis上的Windows 20
  • 在java中设置最大递归深度

    我知道这个问题已经通过多种方法得到了回答 设置最大堆栈大小 Xss20m 避免测试 如果您需要更大的递归 则问题出在程序内 这些方法都很棒 但是我know我的代码中有一个问题 我想专门限制 限制为一个较小的数字 例如 5 递归深度 以测试这
  • 如何读取firebase数据库

    这是我的数据结构 很多俱乐部 每个俱乐部都有地址 我试图使数据库扁平化 现在我想在表格视图上加载一些俱乐部信息 当我向下滑动 iPhone 屏幕时 它会加载接下来的一些俱乐部信息 这是我的代码 但它会加载所有俱乐部信息 如何仅加载几个俱乐部
  • 更改 Java Swing 组件焦点指示器的颜色

    我有一个带有 JButton JTextField 和 JTable 的 JPanel TAB 键按预期遍历这些组件 并在具有焦点的组件 或 JTable 情况下的单元格 周围绘制一个小黑框 如何更改黑盒焦点指示器的颜色 选择外观由每个组件
  • Robot Framework/Selenium 中使用 BrowserMobProxy 将 URL 列入黑名单?

    我使用 RobotFramework 和 Selenium 库为各种网站编写自动化测试用例 我遇到了一个问题 由于第三方 URL 加载缓慢 某些页面需要永远加载 我想阻止它们以加快测试执行速度 但是 我坚持通过 Robot Framewor