代码之家  ›  专栏  ›  技术社区  ›  Alex

如何修复python selenium测试无法识别的pac文件?

  •  1
  • Alex  · 技术社区  · 6 年前

    由于我不能用简短的方式解释的原因,我想用 pac 文件 firefox 测试( python-selenium )为各种类型的请求协调使用的代理。

    这是 派克靴 我正在使用的文件:

    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()
    

    因为 派克靴 文件包含一个明显的语法错误,我希望测试失败(如 UnknownError )中。但是,页面加载没有问题,测试成功。

    为什么 派克靴 Firefox驱动程序中没有使用文件?或者是加载但被忽略了?是否可以从 派克靴 文件?

    我试着像上面那样做,但是(即使没有语法错误)我看不到 console.log 任何地方(浏览器本身都没有,为此我增加了10秒的睡眠时间,因此我可以按F12键检查浏览器的控制台)。

    如何使用 派克靴 Firefox的文件?

    附录:

    你甚至可以用下面的 派克靴 文件以查看它根本没有被使用:

    //
    // 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;      
    }
    

    每个请求都应该被拒绝-但是测试仍然有效并且网页被正确请求…

    1 回复  |  直到 6 年前
        1
  •  0
  •   Alex    6 年前

    解决方案是定义自动配置url!

    一个人不能使用像

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

    但是一个url表单

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