Ваша кнопка - #BoxAlertBtnOk
появится на веб-странице через мгновение, когда вы позвоните await page.click("#BoxAlertBtnOk");
, кнопка станет невидимой. Попробуйте подождать, пока оно не станет видимым, затем выполните действие:
await page.waitForSelector("#BoxAlertBtnOk");
await page.click("#BoxAlertBtnOk");
await page.waitForSelector("input[value='Perito RE / G.F.']");
await page.click("input[value='Perito RE / G.F.']");
Итак, у вас
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Сбой канала связи
java.net.ConnectException: Connection refused
Я цитирую из этого ответа, который также содержит пошаговое руководство по MySQL+JDBC:
Если вы получаете
SQLException: Connection refused
илиConnection timed out
или MySQL specificCommunicationsException: Communications Link failure
, то это означает, что БД вообще недоступна. Это может иметь одну или несколько из следующих причин:
- IP-адрес или имя хоста в URL JDBC неверны.
- Имя хоста в JDBC URL не распознается локальным DNS-сервером.
- Отсутствует или неверно указан номер порта в URL JDBC.
- Сервер БД не работает.
- Сервер БД не принимает TCP/IP-соединения.
- Сервер БД исчерпал количество соединений.
- Что-то между Java и DB блокирует соединения, например, брандмауэр или прокси.
Чтобы решить ту или иную проблему, следуйте следующим советам:
- Проверьте и протестируйте их с помощью
ping
.- Обновите DNS или используйте IP-адрес в URL JDBC.
- Проверьте его на основе
my.cnf
СУБД MySQL.- Запустите БД.
- Проверьте, запущен ли mysqld без опции
--skip-networking
.- Перезапустите БД и исправьте свой код так, чтобы он закрывал соединения в
finally
.- Отключите брандмауэр и/или настройте брандмауэр/прокси, чтобы разрешить/перенаправить порт.
Скачайте MySQL-JDBC-Type-4-Treiber (например, 'mysql-connector-java-5.1.11-bin.jar' из 'mysql-connector-java-5.1.11.zip') на Mysql.
Вам необходимо включить jar драйвера во время компиляции и выполнения в свой classpath.
Class.forName( "com.mysql.jdbc.Driver" ); // do this in init
// edit the jdbc url
Connection conn = DriverManager.getConnection( "jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName", username, password );
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery( "select * from table" );
Возможно, я здесь не на то дерево, но ваше исключение, похоже, указывает на то, что ваш сервер MySQL недоступен.
Исключение в потоке "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Ошибка канала связи Последний пакет, успешно отправленный на сервер, был 0 миллисекунды назад. Драйвер не получил пакетов от сервера. at ...
Что произойдет, если вы попробуете (с терминала)
mysql -u username -p
Вам будет предложено ввести пароль, связанный с именем пользователя. После того, как вы введете правильный пароль, подключится ли клиент mysql?
Возможно, вам придется запустить MySQL из настроек, если нет. Вы также можете настроить его запуск при запуске.
dbhost=jdbc:mysql://172.18.23.100:3306/yourdatabase?useUnicode=yes&characterEncoding=UTF-8&useSSL=false
user=root
password=Password#321
con = DriverManager.getConnection(dbhost, user, password);
, если mysql версия 8 или более высокий пользователь обновили коннектор
Эта ошибка может также произойти, если Java пытается соединиться с MySQL по SSL, но что-то идет не так, как надо. (В моем случае я настраивал Сервер Payara 5.193.1 пула соединения к MySQL.)
Некоторые люди предложили установку useSSL=false
. Однако начиная с версии 8.0.13
Connector/J, та установка удерживается от использования. Вот выборка от [1 139] Свойства Конфигурации MySQL Connector/J 8.0 :
sslMode
По умолчанию, сетевыми соединениями является зашифрованный SSL; это свойство разрешает безопасным соединениям быть выключенными, или разные уровни безопасности, которая будет выбрана. Следующие значения позволяются:
DISABLED
- Устанавливают незашифрованные соединения;PREFERRED
- (значение по умолчанию) Устанавливают зашифрованные соединения, если сервер включил им, иначе отступите к незашифрованным соединениям;REQUIRED
- Устанавливают безопасные соединения, если сервер включил им, сбой иначе;VERIFY_CA
- КакREQUIRED
, но дополнительно проверяют сервер сертификат TLS против настроенных сертификатов Центра сертификации (CA);VERIFY_IDENTITY
- КакVERIFY_CA
, но дополнительно проверяют, что сертификат сервера соответствует хосту, к которому предпринято соединение.Это свойство заменило свойства
useSSL
,requireSSL
прежней версии устаревшие, иverifyServerCertificate
, которые все еще приняты, но переведены в значение для [1 112], еслиsslMode
явно не установлен:useSSL=false
переводится в [1 115];{"useSSL=true", "requireSSL=false", "verifyServerCertificate=false"}
переводится в [1 117];{"useSSL=true", "requireSSL=true", "verifyServerCertificate=false"}
переводится в [1 119];{"useSSL=true" AND "verifyServerCertificate=true"}
переводится в [1 121]. Нет никаких эквивалентных настроек прежней версии для [1 122]. Обратите внимание, что для ВСЕХ серверных версий настройка по умолчанию [1 123]PREFERRED
, и это эквивалентно настройкам прежней версии [1 125],requireSSL=false
, иverifyServerCertificate=false
, которые отличаются от их настроек по умолчанию для Connector/J 8.0.12 и ранее в некоторых ситуациях. Должны быть рассмотрены заявления, которые продолжают использовать свойства прежней версии и полагаться на их старые настройки по умолчанию.свойства прежней версии проигнорированы, если
sslMode
установлен явно. Если ни один из [1 129] илиuseSSL
не установлен явно, настройка по умолчанию [1 131] применяется.Значение по умолчанию :
PREFERRED
Начиная с версии : 8.0.13
Так, в моем случае, установка sslMode=DISABLED
была всем, что я должен был решить вопрос. Это было на тестовой машине. Но для производства, безопасное решение правильно настроило бы клиент Java и сервер MySQL для использования SSL.
Уведомление, что путем отключения SSL, Вам, возможно, также придется установить allowPublicKeyRetrieval=true
. (Снова, не мудрое решение с точки зрения безопасности). Дополнительная информация предоставляется в [1 140] MySQL ConnectionString Options :
AllowPublicKeyRetrieval
, Если учетная запись пользователя использует
sha256_password
аутентификация, пароль, должен быть защищен во время передачи; TLS является предпочтительным механизмом для этого, но если это не будет доступно затем, то шифрование открытого ключа RSA будет использоваться. Для определения server’s открытого ключа RSA используйтеServerRSAPublicKeyFile
установка строки подключения или установитеAllowPublicKeyRetrieval=True
, чтобы позволить клиенту автоматически запрашивать открытый ключ с сервера. Обратите внимание, чтоAllowPublicKeyRetrieval=True
мог позволить злонамеренному прокси выполнять нападение MITM для получения незашифрованного пароля, таким образом, это - Ложь по умолчанию и должно быть явно включено.