Привет!
В тесте необходимо проверить отправку GET запроса при наведении мыши на некий объект. Если кто научит/направит - буду премного благодарен
Привет!
В тесте необходимо проверить отправку GET запроса при наведении мыши на некий объект. Если кто научит/направит - буду премного благодарен
в webdrier таких средств нету.
тут несколько путей, или писать самому используя urllib
или подключить browsermob proxy GitHub - webmetrics/browsermob-proxy: NOTICE: this project has been forked and is being maintained at https://github.com/lightbody/browsermob-proxy и использовать его
второй вариант, более правильнее
// start the proxy
ProxyServer server = new ProxyServer(4444);
server.start();
// get the Selenium proxy object
Proxy proxy = server.seleniumProxy();
// configure it as a desired capability
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.PROXY, proxy);
// start the browser up
WebDriver driver = new FirefoxDriver(capabilities);
// create a new HAR with the label "yahoo.com"
server.newHar("yahoo.com");
// open yahoo.com
driver.get("http://yahoo.com");
// get the HAR data
Har har = server.getHar();
а вот как это можно сделать на python
from browsermobproxy import Server
server = Server("path/to/browsermob-proxy")
server.start()
proxy = server.create_proxy()
from selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.set_proxy(proxy.selenium_proxy())
driver = webdriver.Firefox(firefox_profile=profile)
proxy.new_har("google")
driver.get("http://www.google.co.uk")
proxy.har # returns a HAR JSON blob
proxy.stop()
driver.quit()
Туплю… Установил pip install browsermob-proxy
Не могу нигде найти бинарник
Потом в приступе безысходности скачал http://cloud.github.com/downloads/webmetrics/browsermob-proxy/browsermob-proxy-2.0-beta-6-bin.zip
Разархивировал, и когда в примере указываю путь к бинарнику, матерится таким логом:
Traceback (most recent call last):
File "test_request_tracking.py", line 12, in <module>
server.start()
File "/usr/local/lib/python2.7/dist-packages/browsermobproxy/server.py", line 44, in start
self.process = Popen(self.command, stdout=PIPE, stderr=STDOUT)
File "/usr/lib/python2.7/subprocess.py", line 679, in init
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1239, in _execute_child
raise child_exception
OSError: [Errno 13] Permission denied
ну у тебя ошибка в том, что файл запуска браузер-прокси не найден
показывай скрипт, который ты делал
куда качал и розархивировал файлы browsermob-proxy
http client library от Apache пробовали юзать ?
Для побаловаться взял код выше
from selenium import webdriver
from browsermobproxy import Server
server = Server("/home/user/Downloads/browsermob-proxy-2.0-beta-6/bin/browsermob-proxy")
server.start()
proxy = server.create_proxy()
profile = webdriver.FirefoxProfile()
profile.set_proxy(proxy.selenium_proxy())
driver = webdriver.Firefox(firefox_profile=profile)
proxy.new_har("google")
driver.get("http://www.google.co.uk")
proxy.har # returns a HAR JSON blob
proxy.stop()
driver.quit()
так как у тебя показывает OSError: [Errno 13] Permission denied
попробуй запустить из root
Не помогло. Сейчас попробую посносить всё связанное с браузермобом и повторю
Так, с правами разобрался. Теперь у меня проблема возникла с firefox_profile
driver = webdriver.Firefox(firefox_profile=profile)
================================================================ ERRORS ================================================================
__________________________ ERROR collecting test_request_tracking.py _________________________
test_request_tracking.py:17: in <module>
driver = webdriver.Firefox(firefox_profile=profile)
/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py:51: in init
self.binary, timeout),
/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py:47: in init
self.binary.launch_browser(self.profile)
/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py:44: in launch_browser
self._wait_until_connectable()
/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py:86: in _wait_until_connectable
self.profile.path, self._get_firefox_output()))
E WebDriverException: Message: "Can't load the profile. Profile Dir: /tmp/tmpcux7FH Firefox output: * LOG addons.xpi: startup\n* LOG addons.xpi: checkForChanges\n*** LOG addons.xpi: No changes found\n"
никогда не пользовался последним…
upd В догонку, можно обойтись без профиля? В приоритете Chrome, в файрфоксе пытаюсь просто понять работу на примере
опять у тебя проблемы :) сколько можно :)
какую версию ФФ ты используешь? попробуй скачать самый последний дистрибутив
если тебе нужно на хроме, так все и на хроме делай
можешь написать аналог кода с джавы на питон?
http://automated-testing.info/forum/kak-poymat-get-zapros#comment-3208
Снова я…
Запилил в хроме, вроде заработало, даже возвращает что-то.
{u'log':
{
u'version': u'1.1',
u'creator':
{u'version': u'2.0',
u'name': u'BrowserMob Proxy'},
u'pages': [{u'title': u'',
u'startedDateTime': u'2012-10-19T12:54:05.882+0000',
u'id': u'google',
u'pageTimings': {}}],
u'entries': []}}
Собственно беда в том, что чтобы я не воротил в тесте, возвращает то же самое
PS Никак не могу толкового мануала нагуглить с живым примером и готовым аутпутом, чтобы было видно куда копать
ну высылай пример, я полробую у себя
Завтра с работы отправлю. Проекта под рукой нет.
.
# -- coding: utf-8 --
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import NoSuchElementException, ElementNotVisibleException
from browsermobproxy import Server
server = Server("/home/user/Downloads/browsermob-proxy-2.0-beta-6/bin/browsermob-proxy")
server.start()
proxy = server.create_proxy()
driver = webdriver.Chrome()
driver.get("http://google.com.ua/")
driver.find_element_by_id("gbqfsb").click()
# После этого клика в консоли явно вижу уходят запросы
# Например:
# Request URL:http://www.google.com/doodles/finder/
# Request Method:GET
# Объясни, пожалуйста, как отловить этот запрос браузермобом
# И как примерно должен выглядеть аутпут?
driver.quit()
```
рабочий пример выложил на блог с некоторым описанием, если вдруг кому понадобиться
http://poliarush.com/working/development/chromedriver-python-browsermob-proxy.html
Миша, спасибо! Работает. Только пришлось попариться со структурой лога, чтобы найти там то-что нужно :)
Я все сделал на Java так же - подключил browser-mob proxy
У меня не отображаеться flash контент и разние плагини
Пишет load error 2036 на месте контента
может я dependency не то покдлючил ??
Помогите, целий день потратил на ето (
Пример брал с сайта
dependency на либу
<dependency>
<groupId>org.browsermob</groupId>
<artifactId>browsermob-proxy</artifactId>
<version>2.0-beta-2</version>
</dependency>
код:
WebDriver webDriver = null;
DesiredCapabilities capabilities = new DesiredCapabilities();
server.start();
Proxy proxy = server.seleniumProxy();
capabilities.setCapability(CapabilityType.PROXY, proxy);
if (FIREFOX.equals(browserName)) {
webDriver = new FirefoxDriver(capabilities);
}
скрин єкрана, - контента нету, там где красним
создавай отдельную тему, так как тут только python обсуждался
будем смотреть, пока что с ходу могу только предположить, что контент возможно лежит на другом сервере.
и надо будет добавить эти сервера в прокси
хотя это чисто предложение
сделал так:
public static ProxyServer server = new ProxyServer(9090);
server.start();
server.setCaptureContent(true);
server.setCaptureHeaders(true);
Proxy proxy = new Proxy().setHttpProxy("localhost:9090");
capabilities.setCapability(CapabilityType.PROXY, proxy);
webDriver = new FirefoxDriver(capabilities);
вроде как работает.