我需要使用PhantomJS为使用https的网站运行Protractor测试。这是一个开发环境,证书是自签名的,PhantomJS无法识别。我正在使用--ignore-ssl-errors标志启动PhantomJS,它应该使它接受无效的证书,但这不起作用。在CLI中:
phantomjs --webdriver=localhost:4444 --web-security=false --ignore-ssl-errors=true --ssl-protocol=any
尽管有这些设置,webdriver的acceptSslCerts属性仍设置为false。从日志中:
Session.negotiatedCapabilities - {"browserName":"phantomjs","version":"2.1.1","driverName":"ghostdriver","driverVersion":"1.2.0","platform":"mac-unknown-64bit","javascriptEnabled":true,"takesScreenshot":true,"handlesAlerts":false,"databaseEnabled":false,"locationContextEnabled":false,"applicationCacheEnabled":false,"browserConnectionEnabled":false,"cssSelectorsEnabled":true,"webStorageEnabled":false,"rotatable":false,"acceptSslCerts":false,"nativeEvents":true,"proxy":{"proxyType":"direct"}}
在相关的GhostDriver回购问题({{3}})中列出了以下代码:
const capabilities = webdriver.Capabilities.phantomjs();
capabilities.set(webdriver.Capability.ACCEPT_SSL_CERTS, true);
capabilities.set(webdriver.Capability.SECURE_SSL, false);
capabilities.set('phantomjs.cli.args', ['--web-security=no', '--ssl-protocol=any', '--ignore-ssl-errors=yes']);
const driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome(), capabilities).build();
我尝试在protractor.conf.js中设置它:
capabilities: {
browserName: 'phantomjs',
'webdriver.Capability.ACCEPT_SSL_CERTS': true,
'webdriver.Capability.SECURE_SSL': false
}
但这没有效果。
有没有人想出如何在https模式下运行PhatomJS?
答案 0 :(得分:2)
我目前面临同样的问题。试过你告诉的所有替代品,似乎没有任何效果。
只有实际工作的东西(对我的项目不可行,但也许对你而言)是实例化传递service_args的webdriver,如下所示:
的Python:
webdriver.PhantomJS(executable_path='/home/rodrigo/bin/phantomjs-2.1.1-linux-x86_64/bin/phantomjs',
desired_capabilities=dict(DesiredCapabilities.PHANTOMJS),
service_args=['--web-security=no', '--ssl-protocol=any', '--ignore-ssl-errors=yes'])
希望它对你有所帮助。