标签: browsermob

如何在python-selenium中使用browsermob?

我想在使用selenium进行GUI测试时使用browsermob来监控网络连接.我在这里,这里这里找到了一些信息和文档,但是如何真正使用它绝对不清楚.

在文档中,它读到:

server = Server("path/to/browsermob-proxy")
Run Code Online (Sandbox Code Playgroud)

但那条路是什么?哪里可以找到它?

我也明白了

java -jar browsermob.jar --port 9090
Run Code Online (Sandbox Code Playgroud)

但是没有解释这个jar文件是什么,如果它是browsermob安装的一部分,或者是不相关的东西.

如果有人能提供关于如何使用browsermob的COMPLETE和WORKING示例,以及我需要安装的所有内容,我将不胜感激......

python selenium browsermob

13
推荐指数
3
解决办法
6190
查看次数

如何在Python上使用selenium webdriver和browsermob代理捕获网络流量?

我想通过在Python上使用Selenium Webdriver来捕获网络流量.因此,我必须使用代理(如BrowserMobProxy)

当我使用webdriver.Chrome时:

from browsermobproxy import Server

server = Server("~/browsermob-proxy")

server.start()
proxy = server.create_proxy()

from selenium import webdriver
co = webdriver.ChromeOptions()
co.add_argument('--proxy-server={host}:{port}'.format(host='localhost', port=proxy.port))

driver = webdriver.Chrome(executable_path = "~/chromedriver", chrome_options=co)

proxy.new_har
driver.get(url)
proxy.har # returns a HAR 

for ent in proxy.har['log']['entries']:
    print ent['request']['url']
Run Code Online (Sandbox Code Playgroud)

网页已正确加载,所有请求都可在HAR文件中访问和访问.但是当我使用webdriver.Firefox时:

# The same as above
# ...
from selenium import webdriver
profile  = webdriver.FirefoxProfile()
driver = webdriver.Firefox(firefox_profile=profile, proxy = proxy.selenium_proxy())

proxy.new_har
driver.get(url)
proxy.har # returns a HAR

for ent in proxy.har['log']['entries']:
    print ent['request']['url']
Run Code Online (Sandbox Code Playgroud)

无法正确加载网页,并且HAR文件中的请求数小于应该的请求数.

你知道第二个代码中的代理设置有什么问题吗?我应该如何修复它以正确使用webdriver.Firefox?

python selenium python-requests selenium-webdriver browsermob

9
推荐指数
1
解决办法
2万
查看次数

将BrowserMob代理传递给Sauce Labs - "代理服务器拒绝连接"错误

我一直试图将BrowserMob代理传递给Sauce Labs,但没有运气.

这是我尝试过的:

  • 启动代理服务器

    sh browsermob-proxy -port 9090
    
    Run Code Online (Sandbox Code Playgroud)
  • 启动代理

    curl -X POST http://localhost:9090/proxy
    {"port":9091} 
    
    Run Code Online (Sandbox Code Playgroud)
  • 启动酱连接,并传递代理服务器信息

    java -jar Sauce-Connect.jar myname xxxxxx -p localhost:9091
    
    Run Code Online (Sandbox Code Playgroud)
  • 运行Java客户端

    ProxyServer proxyServer = new ProxyServer(9091);
    proxyServer.start();    
    
    Proxy proxy = proxyServer.seleniumProxy();
    DesiredCapabilities capabillities = DesiredCapabilities.firefox();
    capabillities.setCapability(CapabilityType.PROXY, proxy);
    capabillities.setCapability("version", "5");
    capabillities.setCapability("platform", Platform.XP);
    this.driver = new RemoteWebDriver(
            new URL("http://myname:xxxxxx@ondemand.saucelabs.com:80/wd/hub"),
            capabillities);
    
    Run Code Online (Sandbox Code Playgroud)

下面的帖子提供了关于如何使它工作的一般指导线,但我不断收到"代理服务器拒绝连接"的错误.

java proxy selenium saucelabs browsermob

6
推荐指数
1
解决办法
2726
查看次数

如何在Protractor中使用BrowserMob Proxy?

我想在Protractor测试套件运行期间捕获我的应用程序发出的网络请求.

BrowserMob Proxy看起来像是一个很棒的工具.

我想使用browsermob-node node.js绑定将BrowserMob Proxy集成到Protractor中,如下所示:

  • onPrepare:创建一个新代理并启动它
  • beforeEach:开始一个新的HAR
  • afterEach:将HAR写入文件
  • onComplete:停止代理

但是,bro​​wsermob-node的API要求我将回调传递给每个方法onPrepare,onComplete并假设它们是同步的.没有done我可以通过的回调.

我的测试在Firefox,iOS和Android上运行(通过Appium).

protractor browsermob

6
推荐指数
1
解决办法
2877
查看次数

硒获取.har文件

我有一个两页的应用程序:
/ login
/ profile
我想获取.har文件页面/ profile
当我转到/ login页面时,将使用key = connect.sid和value =“ example value”创建cookie。该Cookie尚未激活。我添加了具有活动connect.sid的cookie。

WebDriver webDriver = getDriver();
webDriver.get(LOGIN_PAGE);
webDriver.manage().addCookie(connectsSId);
Run Code Online (Sandbox Code Playgroud)

它不起作用,因为在加载页面之后,/ login创建了一个新的cookie。我也尝试了这段代码:

WebDriver webDriver = getDriver();
webDriver.get(PROFILE_PAGE);
webDriver.manage().deleteAllCookies();
webDriver.manage().addCookie(connectsSId);
Run Code Online (Sandbox Code Playgroud)

这是行不通的。添加了cookie,但为时已晚。

 WebDriver webDriver = getDriver();
 LoginPage loginPage = new LoginPage(getDriver());
 LandingPage landingPage = loginPage.login();
 landingPage.openProfilePage();
Run Code Online (Sandbox Code Playgroud)

这段代码为/ login页面创建了一个.har文件。
由于某些原因,仅在首次调用页面后才创建文件。我不能解决这个问题。

java selenium browsermob

6
推荐指数
1
解决办法
6131
查看次数

使用BrowserMobProxy配置WebDriverIO

有没有人有关于如何使用WebDriverIO配置BrowserMobProxy的正确示例?这样我就可以捕获网络流量.我以前曾使用WebDriverJS,它本质上是WebDriverIO的弃用版本.

javascript selenium webdriver node.js browsermob

6
推荐指数
1
解决办法
795
查看次数

在 ruby​​ 中为 selenium chrome 驱动程序设置代理

Browsermob 代理:-

https://github.com/jarib/browsermob-proxy-rb
Run Code Online (Sandbox Code Playgroud)

我可以为 Firefox 配置文件创建和设置代理,但不能在 chrome 上创建和设置代理。

我不知道 chrome 必须使用哪些选项来设置代理。

我正在使用以下代码:-

对于火狐:-

require 'selenium/webdriver'
require 'browsermob/proxy'

server = BrowserMob::Proxy::Server.new("/path/to/downloads/browsermob-proxy/bin/browsermob-proxy") #=> #<BrowserMob::Proxy::Server:0x000001022c6ea8 ...>
server.start

proxy = server.create_proxy #=> #<BrowserMob::Proxy::Client:0x0000010224bdc0 ...>

profile = Selenium::WebDriver::Firefox::Profile.new #=> #<Selenium::WebDriver::Firefox::Profile:0x000001022bf748 ...>
profile.proxy = proxy.selenium_proxy

driver = Selenium::WebDriver.for :firefox, :profile => profile

proxy.new_har "google"
driver.get "http://google.com"

har = proxy.har #=> #<HAR::Archive:0x-27066c42d7e75fa6>
har.entries.first.request.url #=> "http://google.com"
har.save_to "/tmp/google.har"

proxy.close
driver.quit
Run Code Online (Sandbox Code Playgroud)

对于铬:-

require 'selenium/webdriver'
require 'browsermob/proxy'

server = BrowserMob::Proxy::Server.new("/path/to/downloads/browsermob-proxy/bin/browsermob-proxy") #=> #<BrowserMob::Proxy::Server:0x000001022c6ea8 ...>
server.start

proxy = server.create_proxy #=> #<BrowserMob::Proxy::Client:0x0000010224bdc0 ...> …
Run Code Online (Sandbox Code Playgroud)

ruby proxy selenium-chromedriver selenium-webdriver browsermob

5
推荐指数
1
解决办法
5531
查看次数

使用 selenium 的 Browsermob 代理生成空输出

我使用 selenium 3.0.2 和 browsermob proxy 0.7.1 来捕获网络数据。我得到的只是一个空的 JSON。我的代码是:

server = Server("/Users/dev/Downloads/browsermob-proxy-2.1.2/bin/browsermob-proxy")
server.start()
proxy = server.create_proxy()

if browser is None:
    profile = webdriver.FirefoxProfile()
    profile.set_preference("browser.privatebrowsing.autostart", True)

browser = webdriver.Firefox(firefox_profile=profile, proxy=proxy.selenium_proxy())
proxy.new_har("google", options={'captureHeaders': True, 'captureContent': True})

browser.get("https://google.com/")

print(proxy.har)
Run Code Online (Sandbox Code Playgroud)

我得到的只是这个空的 JSON

{'log': {'pages': [{'id': 'google', 'comment': '', 'pageTimings': {'comment': ''}, 'startedDateTime': '2016-12-01T14 :23:24.984-05:00', '标题': 'google'}], '条目': [], '版本': '1.2', '创建者': {'评论': '', '名称' : 'BrowserMob 代理', '版本': '2.1.2'}, '评论': ''}}

python selenium selenium-webdriver browsermob browsermob-proxy

5
推荐指数
1
解决办法
2640
查看次数

BrowserMob代理Python-如何获取响应正文?

我需要使用Selenium Chrome驱动程序和browsermob代理获取POST请求的响应正文内容。目前,尽管我可以在浏览器网络流量中看到响应,但是当我读取它时,此内容未包含在我的文件HAR输出中。我该如何做才能捕获响应流量?(对不起,这是编程新手,看不到有关BMP的大量python文档)

    server.start()
    代理= server.create_proxy()
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument(“-proxy-server = {0}”。format(proxy.proxy)) 
    驱动程序= webdriver.Chrome(executable_path =“ chromedriver.exe”,chrome_options = chrome_options)

    proxy.new_har(“ req”,options = {'captureHeaders':True,'captureContent':True})
    driver.get('https://www.example.com/something')


    result_har = json.dumps(proxy.har,sure_ascii = False)
    使用open(“ haroutput.har”,“ w”)作为harfile:
        harfile.write(result_har)

    server.stop()
    driver.quit()

python selenium selenium-chromedriver browsermob

5
推荐指数
1
解决办法
2125
查看次数

2022 年使用 Selenium 捕获网络流量

2022 年在 selenium 中捕获网络日志的最佳方式是什么?我知道有多个用作browsermob代理服务器的示例。但从 GitHub 上看,browsermob 存储库似乎不再维护了。

selenium automation browsermob webdriver-w3c-spec

5
推荐指数
0
解决办法
496
查看次数