繁体   English   中英

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

[英]How to fix pac file not recognized for python selenium test?

出于某种原因,我无法在此处简短说明,我想使用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 )。 但是,页面加载没有问题,并且测试成功。

为什么在Firefox驱动程序中不使用pac文件? 还是加载但被忽略了? 是否可以从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;      
}

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

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

一个人不能使用这样的路径

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

但URL形式

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM