微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 如何让selenium-webdriver忽略Firefox和PhantomJS中的SSL错误?

鉴于这些Node依赖项:

{
    "chromedriver": "^2.24.1",
    "cucumber": "^1.3.0",
    "geckodriver": "^1.1.2",
    "phantomjs-prebuilt": "^2.1.12",
    "selenium-webdriver": "^3.0.0-beta-2"
} 

我希望PhantomJS和Firefox忽略SSL证书.以下是我的browser.js的外观:

require('geckodriver');

// main browser object
var browserHandle;

// load selenium webdriver and some rules
var webdriver = require('selenium-webdriver'), 
    By = webdriver.By, 
    until = webdriver.until;

// load phantomjs into webdriver capabilities
var phantomjs_exe = require('phantomjs-prebuilt').path;
var customPhantom = webdriver.Capabilities.phantomjs();
customPhantom.set("phantomjs.binary.path", phantomjs_exe);

webdriver.Builder()
    //.forbrowser('firefox')
    //.forbrowser('phantomjs')
    .withCapabilities(customPhantom)
    .build();

有关–ignore-ssl-errors = yes的任何建议吗?如何在代码中实现它?我想只使用JavaScript而不是Java.

解决方法:

这仅适用于Javascript / Node.js Selenium Webdriverjs案例,仅适用于MacOS解决方案.

> Firefox案例:

一个.使用适用于Firefox的Profile Manager设置新配置文件.

>使用/Applications/Firefox.app/Contents/MacOS/firefox-bin -P打开配置文件管理器(-profilemanager,这也适用)
>点击“创建个人资料”
>在创建的第二步中,将显示配置文件的路径.复制吧!

添加ffprofile文件

>转到功能/支持
>添加文件“ffprofile.json”
>将{“ffprofile”:“< profilePath>”}添加文件中,其中< profilePath>是你复制的路径.

C.将本地系统添加配置文件

>使用/Applications/Firefox.app/Contents/MacOS/firefox-bin -P再次打开配置文件管理器
>选择新的个人资料,点击“启动Firefox”
>在浏览器中,转到您的https:// ….您应该看到一个页面告诉您证书存在问题
>点击“高级” – > “添加例外” – > “确认安全例外”

d.将其添加到您的browser.js或以编程方式调用浏览器的位置:

var webdriver = require('selenium-webdriver'), 
firefox = require('selenium-webdriver/firefox'),

var ffProfileFile = require('./ffprofile');
var ffProfile = new firefox.Profile(ffProfileFile['ffprofile']);
var ffOptions = new firefox.Options().setProfile(ffProfile);

return browserHandle = new firefox.Driver(ffOptions);

> Phantomjs案例(我这里有两个解决方案,拿起一个对你更好的解决方案):

解决方案1:

var webdriver = require('selenium-webdriver'), 
phantom = require('phantomjs-prebuilt');

var 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"]
                );
return browserHandle = new webdriver
.Builder()
.withCapabilities(capabilities)
.build();

解决方案2:

var webdriver = require('selenium-webdriver'), 
phantom = require('phantomjs-prebuilt');

var capabilities = {
    'browserName' : 'phantomjs',
    'phantomjs.cli.args': ['--ignore-ssl-errors=true',
        '--ssl-protocol=any', '--web-security=false']
}
return browserHandle = new webdriver
.Builder()
.withCapabilities(capabilities)
.build();

对于这个’phantomjs.cli.args’:[‘–ignore-ssl-errors = true’]为我完成了这项工作.

希望它对你有用.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐