Как исправить файл pac, не распознанный для теста python Selen?

1

По причинам, которые я не могу объяснить здесь кратко, я хочу использовать файл 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;      
}

Каждый запрос должен быть отклонен - но тест все еще работает, и веб-страница правильно запрошена...

Теги:
selenium
proxy
firefox
pac

1 ответ

0

Решение - это определение URL-адреса autoconfig!

Нельзя использовать такой путь, как

selenium_proxy.proxyAutoconfigUrl = "/home/user/proxy.pac"

но URL-форму

selenium_proxy.proxyAutoconfigUrl = "file:///home/user/proxy.pac"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню