По причинам, которые я не могу здесь кратко объяснить, я хочу использовать файл pac
для теста firefox
(python-selenium
) для координации используемого прокси-сервера для различных типов запросов.
Вот файл pac
, который я использую:
function FindProxyForURL(url, host)
{
console.log("test proxy");
lsjkd fhafh fasdfhsdjkl fhs
if (url.substring(0, 3) === "ws:" || url.substring(0, 4) === "wss:")
{
return "DIRECT";
} else {
return "PROXY 0.0.0.0:8080";
}
}
и вот полный скрипт для теста:
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
selenium_proxy = webdriver.Proxy()
selenium_proxy.proxy_type = webdriver.common.proxy.ProxyType.PAC
selenium_proxy.proxyAutoconfigUrl = "/path/to/proxy.pac"
profile = webdriver.FirefoxProfile()
profile.set_proxy(selenium_proxy)
driver = webdriver.Firefox(firefox_profile=profile)
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
time.sleep(10)
driver.close()
Поскольку файл pac
содержит очевидную синтаксическую ошибку, я ожидаю, что тест не пройден (например, UnknownError
). Однако страница загружается без проблем, и тест завершается успешно.
Почему файл pac
не используется внутри драйвера firefox? Или он загружен, но игнорируется? Можно ли записать какой-нибудь текст из файла pac
?
Я пытался сделать это, как описано выше, но (даже без синтаксической ошибки) я не могу нигде увидеть console.log
(ни в самом браузере, для которого я добавил режим сна 10 секунд, поэтому я могу нажать F12, чтобы проверить консоль браузера).
Как использовать файл pac
для firefox?
Приложение:
Вы даже можете использовать следующий pac
файл, чтобы увидеть, что он вообще не используется:
//
// Define the network paths (direct, proxy and deny)
//
// Default connection
var direct = "DIRECT";
// Alternate Proxy Server
var proxy = "PROXY 0.0.0.0:8095";
// Default localhost for denied connections
var deny = "PROXY 0.0.0.0:65535";
//
// Proxy Logic
//
function FindProxyForURL(url, host)
{
return deny;
}
КАЖДЫЙ запрос должен быть отклонен - но тест все еще работает, и веб-страница запрашивается правильно ...