Как обеспечить постоянную загрузку драйверов webdrivermanager?

При запуске кода:

PhantomJsDriverManager.getInstance().forceCache().setup();

Или же:

PhantomJsDriverManager.getInstance().setup();

Я получаю исключение сертификата при загрузке драйвера:

java.lang.RuntimeException: javax.net.ssl.SSLPeerUnverifiedException: Host name 'bbuseruploads.s3.amazonaws.com' does not match the certificate subject provided by the peer (CN=*.s3.amazonaws.com, O=Amazon.com Inc., L=Seattle, ST=Washington, C=US)
    at io.github.bonigarcia.wdm.BrowserManager.manage(BrowserManager.java:262)
    at io.github.bonigarcia.wdm.BrowserManager.setup(BrowserManager.java:765)
    at io.github.bonigarcia.wdm.BrowserManager.setup(BrowserManager.java:725)

Это также происходит с другими драйверами, такими как OperaDriverManager и FirefoxDriverManager.

Я проверял:

  • io.github.bonigarcia webdrivermanager 1.6.2
  • io.github.bonigarcia webdrivermanager 1.7.0

Возможно, проблема с сертификатом вышла из-под контроля над плагином.

Мой вопрос: как я могу гарантировать, что загрузки всегда работают? Могу ли я добавить загрузки драйверов браузера в свой локальный репозиторий Maven Nexus, чтобы избежать таких проблем, которые приводят к сбою моих сборок?

Или мне нужно настроить локальный веб-сервер и адаптировать файл webdrivermanager.properties и адаптировать: wdm.phantomjsDriverUrl = https://bitbucket.org/ariya/phantomjs/downloads/ wdm.phantomjsDriverTaobaoUrl = http://npm.taobao.org/mirrors/phantomjs

1 ответ

Решение

Вы можете вручную загрузить двоичный файл и сохранить его там, где его будет искать WebDriverManager. В случае PhantomJS, и предполагается, что вы хотите использовать версию 2.5.0, это место:

~/.m2/repository/webdriver/phantomjs/<plaform>/2.5.0

Например, для Windows:

C:/Users/your-user/.m2/repository/webdriver/phantomjs/windows/2.5.0/phantomjs.exe

... или для Linux (Ubuntu Xenial):

/home/your-user/.m2/repository/webdriver/phantomjs/linux-ubuntu-xenial-x86_64/2.5.0/phantomjs

После этого вы можете заставить его использовать метод forceCache():

PhantomJsDriverManager.getInstance().forceCache().setup();
Другие вопросы по тегам