我想在使用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 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
我一直试图将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)在下面的帖子提供了关于如何使它工作的一般指导线,但我不断收到"代理服务器拒绝连接"的错误.
我想在Protractor测试套件运行期间捕获我的应用程序发出的网络请求.
BrowserMob Proxy看起来像是一个很棒的工具.
我想使用browsermob-node node.js绑定将BrowserMob Proxy集成到Protractor中,如下所示:
onPrepare:创建一个新代理并启动它beforeEach:开始一个新的HARafterEach:将HAR写入文件onComplete:停止代理但是,browsermob-node的API要求我将回调传递给每个方法onPrepare,onComplete并假设它们是同步的.没有done我可以通过的回调.
我的测试在Firefox,iOS和Android上运行(通过Appium).
我有一个两页的应用程序:
/ 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文件。
由于某些原因,仅在首次调用页面后才创建文件。我不能解决这个问题。
有没有人有关于如何使用WebDriverIO配置BrowserMobProxy的正确示例?这样我就可以捕获网络流量.我以前曾使用WebDriverJS,它本质上是WebDriverIO的弃用版本.
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
我使用 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
我需要使用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()
2022 年在 selenium 中捕获网络日志的最佳方式是什么?我知道有多个用作browsermob代理服务器的示例。但从 GitHub 上看,browsermob 存储库似乎不再维护了。
browsermob ×10
selenium ×8
python ×4
java ×2
proxy ×2
automation ×1
javascript ×1
node.js ×1
protractor ×1
ruby ×1
saucelabs ×1
webdriver ×1