Ошибка CreatePlatformSocket(): семейство адресов не поддерживается протоколом и не может найти двоичный файл Chrome с помощью WebDriverManager в AWS Lambda

Я не знаю, что я делаю неправильно, но по какой-то причине он не может найти двоичный файл Chrome, несмотря на то, что я использую WebDriverManager. Я помещаю журналы ниже для справки, но он предположительно не может найти двоичный файл (или не может загрузить двоичный файл?). Я нашел аналогичный вопрос везде, но ни одно из решений, похоже, не работает.

Настраивать

WebDriverManager.chromedriver()
        .targetPath("/tmp")
        .setup();
ChromeOptions options = new ChromeOptions();
options.addArguments(
        "--no-sandbox",
        "--disable-gpu",
        "--enable-javascript",
        "disable-infobars",
        "--disable-dev-shm-usage",
        "--disable-extensions",
        "--headless",
        "--user-data-dir=/tmp/user-data",
        "--data-path=/tmp/data-path",
        "--homedir=/tmp",
        "--disk-cache-dir=/tmp/cache-dir",
        "window-size=1400,600",
        "log-level=3");
this.driver = (WebDriver) new ChromeDriver(options);
this.driver.manage().deleteAllCookies();
this.driver.manage().window().fullscreen();

ПОМ

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.10.0</version>
</dependency>

<dependency>
    <groupId>org.seleniumhq.webdriver</groupId>
    <artifactId>webdriver-common</artifactId>
    <version>0.9.7376</version>
</dependency>

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>3.7.1</version>
</dependency>

Журналы

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Nov 01, 2019 9:41:27 AM java.util.prefs.FileSystemPreferences$1 run
WARNING: Couldn't create user preferences directory. User preferences are unusable.
Nov 01, 2019 9:41:27 AM java.util.prefs.FileSystemPreferences$1 run
WARNING: java.io.IOException: No such file or directory
Starting ChromeDriver 78.0.3904.70 (edb9c9f3de0247fd912a77b7f6cae7447f6d3ad5-refs/branch-heads/3904@{#800}) on port 24233
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
[1572601288.635][SEVERE]: CreatePlatformSocket() failed: Address family not supported by protocol (97)
unknown error: cannot find Chrome binary
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'ip-10-128-128-181.eu-west-2.compute.internal', ip: '10.128.128.181', os.name: 'Linux', os.arch: 'amd64', os.version: '4.14.146-93.123.amzn1.x86_64', java.version: '1.8.0_201'
Driver info: driver.version: ChromeDriver
remote stacktrace: #0 0x563e5f6197e9 <unknown>
: org.openqa.selenium.WebDriverException
org.openqa.selenium.WebDriverException: unknown error: cannot find Chrome binary
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'ip-10-128-128-181.eu-west-2.compute.internal', ip: '10.128.128.181', os.name: 'Linux', os.arch: 'amd64', os.version: '4.14.146-93.123.amzn1.x86_64', java.version: '1.8.0_201'
Driver info: driver.version: ChromeDriver
remote stacktrace: #0 0x563e5f6197e9 <unknown>

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$new$0(W3CHandshakeResponse.java:57)
at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$getResponseFunction$2(W3CHandshakeResponse.java:104)
at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:123)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:138)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:219)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:142)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:157)
at Controllers.ChromeDriverController.<init>(ChromeDriverController.java:73)
at Controllers.APIController.createCustomer(APIController.java:735)
at com.amazonaws.lambda.creation.CreateOrg.handleRequest(CreateOrg.java:107)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)

Новые журналы

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Nov 01, 2019 1:40:32 PM java.util.prefs.FileSystemPreferences$1 run
WARNING: Couldn't create user preferences directory. User preferences are unusable.
Nov 01, 2019 1:40:32 PM java.util.prefs.FileSystemPreferences$1 run
WARNING: java.io.IOException: No such file or directory
Starting ChromeDriver 78.0.3904.70 (edb9c9f3de0247fd912a77b7f6cae7447f6d3ad5-refs/branch-heads/3904@{#800}) on port 8973
Only local connections are allowed.
Please protect ports used by ChromeD[1572615634.489][SEVERriver and rE]: CreatePlatformSocket() failed: Address family not supported by protocol (97)
elated test frameworks to prevent access by malicious code.
unknown error: cannot find Chrome binary
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'ip-10-128-42-38.eu-west-2.compute.internal', ip: '10.128.42.38', os.name: 'Linux', os.arch: 'amd64', os.version: '4.14.146-93.123.amzn1.x86_64', java.version: '1.8.0_201'
Driver info: driver.version: ChromeDriver
remote stacktrace: #0 0x55f3c74477e9 <unknown>
: org.openqa.selenium.WebDriverException
org.openqa.selenium.WebDriverException: unknown error: cannot find Chrome binary
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'ip-10-128-42-38.eu-west-2.compute.internal', ip: '10.128.42.38', os.name: 'Linux', os.arch: 'amd64', os.version: '4.14.146-93.123.amzn1.x86_64', java.version: '1.8.0_201'
Driver info: driver.version: ChromeDriver
remote stacktrace: #0 0x55f3c74477e9 <unknown>

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$new$0(W3CHandshakeResponse.java:57)
at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$getResponseFunction$2(W3CHandshakeResponse.java:104)
at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:122)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:125)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:212)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:130)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:157)
at Controllers.ChromeDriverController.<init>(ChromeDriverController.java:73)
at Controllers.APIController.createCustomer(APIController.java:735)
at com.amazonaws.lambda.creation.CreateOrg.handleRequest(CreateOrg.java:107)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)

person Meerfall the dewott    schedule 01.11.2019    source источник


Ответы (1)


Это сообщение об ошибке...

[1572601288.635][SEVERE]: CreatePlatformSocket() failed: Address family not supported by protocol (97)
unknown error: cannot find Chrome binary
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'ip-10-128-128-181.eu-west-2.compute.internal', ip: '10.128.128.181', os.name: 'Linux', os.arch: 'amd64', os.version: '4.14.146-93.123.amzn1.x86_64', java.version: '1.8.0_201'
Driver info: driver.version: ChromeDriver
remote stacktrace: #0 0x563e5f6197e9 <unknown>
: org.openqa.selenium.WebDriverException
org.openqa.selenium.WebDriverException: unknown error: cannot find Chrome binary
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'ip-10-128-128-181.eu-west-2.compute.internal', ip: '10.128.128.181', os.name: 'Linux', os.arch: 'amd64', os.version: '4.14.146-93.123.amzn1.x86_64', java.version: '1.8.0_201'
Driver info: driver.version: ChromeDriver
remote stacktrace: #0 0x563e5f6197e9 <unknown>

... подразумевает, что ChromeDriver не смог инициировать/создать новый сеанс WebBrowser, то есть сеанс Chrome Browser.

Ваша основная проблема заключается в несовместимости между версиями двоичных файлов, которые вы используете, следующим образом:

  • Как вы используете:

    <dependency>
        <groupId>io.github.bonigarcia</groupId>
        <artifactId>webdrivermanager</artifactId>
        <version>3.7.1</version>
    </dependency>
    
  • Предположительно, это, в свою очередь, загрузит и будет использовать последнюю версию chromedriver=78.0.

  • Примечания к выпуску chromedriver=78.0 четко упоминает следующее:

Поддерживает Chrome версии 78.

  • Предположительно, вы используете chrome= 78.0.
  • Но ваша версия Selenium Client3.10.0, то есть почти на 2 года старше.
  • Ваша версия JDK 1.8.0_201 немного старше.

Таким образом, существует явное несоответствие между JDK v8u201 , Selenium Client v3.10.0 , ChromeDriver v78.0 и Chrome Browser v78. .0


Решение

Обеспечить, что:

  • Selenium обновлен до текущих уровней Версия 3.141.59.
  • JDK обновлен до текущего уровня JDK 8u222< /а>.
  • ChromeDriver обновлен до текущей версии ChromeDriver v78. 0 уровень.
  • Chrome обновлен до текущего уровня Chrome Version 78.0. (согласно примечаниям к выпуску ChromeDriver v78.0)
  • Очистите ваше Рабочее пространство проекта с помощью IDE и перестройте ваш проект только с необходимыми зависимостями.
  • Если базовая версия веб-клиента устарела, удалите ее с помощью Revo Uninstaller и установите последнюю общедоступную и выпущенную версию веб-клиента.
  • Выполните перезагрузку системы.
  • Выполните @Test как пользователь без полномочий root.
  • Всегда вызывайте driver.quit() в методе tearDown(){}, чтобы корректно закрыть и уничтожить экземпляры WebDriver и Web Client.

Outro

CreatePlatformSocket() вернул ошибку: был указан недопустимый аргумент. (0x2726) при попытке доступа к chromedriver через сетевой путь

person DebanjanB    schedule 01.11.2019
comment
Я могу использовать селен максимум 3.14.0 из-за проблем с его распаковкой в ​​​​aws, если он пойдет выше. Будет ли работать понижение версии диспетчера веб-драйверов? - person Meerfall the dewott; 01.11.2019
comment
@Meerfallthedewott Сначала попробуйте с selenium 3.14.0, если проблема не устранена, обновите вопрос с наблюдением и попробуйте второй вариант понижение версии диспетчера веб-драйверов - person DebanjanB; 01.11.2019
comment
Я пробовал с последней версией селена. Это не застегнется. Я просмотрел версии и получил 3.14.0 (как и ожидалось). Какую версию WebDriverManager вы бы порекомендовали? - person Meerfall the dewott; 01.11.2019
comment
@Meerfallthedewott С Selenium v3.14.0 должна работать последняя версия WebDriverManager. Не могли бы вы попробовать и обновить статус, пожалуйста? - person DebanjanB; 01.11.2019
comment
я пробовал с последней версией и версией 3.1 и 3.4 (webdrivermanager) и выдает ту же ошибку - person Meerfall the dewott; 01.11.2019
comment
Я поместил туда (более новые) журналы, так как вижу небольшую вариацию с ошибкой createPlatformSocket. - person Meerfall the dewott; 01.11.2019
comment
@Meerfallthedewott Вы ознакомились с обсуждением, упомянутым в разделе Outro, и ссылками в этом обсуждении? - person DebanjanB; 01.11.2019
comment
Я не уверен, как выход связан с этой ошибкой, поскольку взятый вами пример показывает, что для этого требуются две ошибки createPlaformSocket или ошибка createPlaformSocket и ошибка IPv4. Более или менее речь идет о версиях Windows. Журналы извлекаются из версии Linex (и она работает локально в версии Windows, так что это не проблема). Также я не могу контролировать, где находится водитель. Он должен быть помещен в файл /tmp для aws, чтобы вы могли читать и писать из него. я попробую C://tmp, но я абсолютно уверен, что это не сработает. Есть ли что-нибудь еще, что я могу попробовать? - person Meerfall the dewott; 01.11.2019
comment
Я получил эту ошибку при попытке использовать C://tmp errorMessage: java.lang.IllegalArgumentException: параметр «каталог» не является каталогом: C:/tmp - person Meerfall the dewott; 01.11.2019
comment
См. Ошибка CreatePlatformSocket(): семейство адресов не поддерживается протоколом (97), похоже, что ipv6 не поддерживается, но требуется для Chrome. - person nanvel; 09.11.2020