Перейти к содержимому

Подготовка к сертификации ISTQB FL
онлайн, начало 10 августа
Тестирование REST API
онлайн, начало 10 августа
Программирование на Python для тестировщиков
онлайн, начало 14 августа
Тестирование без требований
онлайн, начало 17 августа
Фотография

Почему в stderr пишется информация, не являющаяся ошибками в webdriver


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 fahin

fahin

    Новый участник

  • Members
  • Pip
  • 3 сообщений

Отправлено 23 октября 2019 - 15:49

Здравствуйте

код

try {
            WebElement answerField = driver.findElement(By.cssSelector("#нет такого"));
        } catch (NoSuchElementException e) {
            System.err.println("===============================================");
            e.printStackTrace();
            System.err.println("===============================================");

        }

 выдает такой stacktrace, обрамленный рамкой

===============================================
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"#нет такого"}
  (Session info: chrome=77.0.3865.90)
  (Driver info: OperaDriver=76.0.3809.132 (fd1acc410994a7a68ac25bc77513d443f3130860-refs/branch-heads/3809@{#1035}),platform=) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:48'
System info: host: '', ip: '', os.name: '', os.arch: '', os.version: '', java.version: ''
Driver info: org.openqa.selenium.opera.OperaDriver
Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 76.0.3809.132 (fd1acc410994..., userDataDir: ...}, cssSelectorsEnabled: true, databaseEnabled: false, goog:chromeOptions: {debuggerAddress: localhost:}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: , platformName: , proxy: Proxy(), rotatable: false, setWindowRect: true, strictFileInteractability: false, takesHeapSnapshot: true, takesScreenshot: true, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unexpectedAlertBehaviour: ignore, unhandledPromptBehavior: ignore, version: 77.0.3865.90, webStorageEnabled: true}
Session ID: 6beb05f734bывфвыавфваыв
*** Element info: {Using=css selector, value=#нет такого}
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
	at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
	at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
	at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
	at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
	at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
	at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
	at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
	at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:323)
	at org.openqa.selenium.remote.RemoteWebDriver.findElementByCssSelector(RemoteWebDriver.java:420)
	at org.openqa.selenium.By$ByCssSelector.findElement(By.java:431)
	at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:315)
	at Lol.test(Lol.java:82)
	at Lol.main(Lol.java:24)
===============================================

откуда в stacktrace'e информация, которая stacktrace'ом не является, а именно:

(Session info: chrome=77.0.3865.90)
  (Driver info: OperaDriver=76.0.3809.132 (fd1acc410994a7a68ac25bc77513d443f3130860-refs/branch-heads/3809@{#1035}),platform=) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:48'
System info: host: '', ip: '', os.name: '', os.arch: '', os.version: '', java.version: ''
Driver info: org.openqa.selenium.opera.OperaDriver
Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 76.0.3809.132 (fd1acc410994..., userDataDir: ...}, cssSelectorsEnabled: true, databaseEnabled: false, goog:chromeOptions: {debuggerAddress: localhost:}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: , platformName: , proxy: Proxy(), rotatable: false, setWindowRect: true, strictFileInteractability: false, takesHeapSnapshot: true, takesScreenshot: true, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unexpectedAlertBehaviour: ignore, unhandledPromptBehavior: ignore, version: 77.0.3865.90, webStorageEnabled: true}
Session ID: 6beb05f734bывфвыавфваыв
*** Element info: {Using=css selector, value=#нет такого}

?

 

также, перед stacktrace'ом в консоли IDE выводится информация красным цветом(что предполагает какие то ошибки)

Starting OperaDriver 76.0.3809.132 (fd1acc410994a7a68ac25bc77513d443f3130860-refs/branch-heads/3809@{#1035}) on port 43894
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
[1571845821.275][WARNING]: This version of OperaDriver has not been tested with Chrome version 77.
Oct 23, 2019 6:50:23 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS

но это тоже не ошибки

 

почему ее нельзя выводить в stdout?

 

 

p.s. не важную информацию из "stacktrace'a" убрал на всякий случай


  • 0

#2 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 766 сообщений


Отправлено 23 октября 2019 - 17:19

Так работает метод printStackTrace() у объекта NoSuchElementException.

Если вам нужен только стектрейс, то берите его - e.getStackTrace() и делайте с ним что хотите.


  • 0

#3 Little_CJIOH

Little_CJIOH

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 486 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 23 октября 2019 - 17:32

Отладка программы - это процесс осознания программистом того, что компьютер делает именно то, что его попросили.

Если вы уйдете в код метода printStackTrace то обнаружите там строчку кода "s.println(this);" где this - ваш webdriver
  • 0

#4 fahin

fahin

    Новый участник

  • Members
  • Pip
  • 3 сообщений

Отправлено 23 октября 2019 - 20:12

Так работает метод printStackTrace() у объекта NoSuchElementException.

Если вам нужен только стектрейс, то берите его - e.getStackTrace() и делайте с ним что хотите.

в приведенном примере, я сам вызываю метод printStackTrace()

но что делать с исключениями, которые появляются в коде естественно, без моего намеренного их создания?

 

может есть какое нибудь property или capability, чтобы можно быть снизить количество выводимых псевдо ошибок?


  • 0

#5 fahin

fahin

    Новый участник

  • Members
  • Pip
  • 3 сообщений

Отправлено 23 октября 2019 - 20:13

Отладка программы - это процесс осознания программистом того, что компьютер делает именно то, что его попросили.

Если вы уйдете в код метода printStackTrace то обнаружите там строчку кода "s.println(this);" где this - ваш webdriver

можно переформулировать вопрос: почему webdriver печатается именно с этими строками, не имеющими отношения к стектрейсу?


  • 0

#6 Little_CJIOH

Little_CJIOH

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 486 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 24 октября 2019 - 06:41

Отладка программы - это процесс осознания программистом того, что компьютер делает именно то, что его попросили.

Если вы уйдете в код метода printStackTrace то обнаружите там строчку кода "s.println(this);" где this - ваш webdriver

можно переформулировать вопрос: почему webdriver печатается именно с этими строками, не имеющими отношения к стектрейсу?

Потому, что именно эти строки выдает метод toString() вебдрайвера, который вызывается функцией println(Object)

Хотя, скорее прав BabyRoot и this будет не вебдрайвер, а NoSuchElementException. Но сути моего ответа это не меняет.
  • 0

#7 Little_CJIOH

Little_CJIOH

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 486 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 24 октября 2019 - 06:53

Так работает метод printStackTrace() у объекта NoSuchElementException.
Если вам нужен только стектрейс, то берите его - e.getStackTrace() и делайте с ним что хотите.

в приведенном примере, я сам вызываю метод printStackTrace()

но что делать с исключениями, которые появляются в коде естественно, без моего намеренного их создания?
 
может есть какое нибудь property или capability, чтобы можно быть снизить количество выводимых псевдо ошибок?

Я вас расстрою Эксцепшен в вашем коде случается не оттого что вы вызвали printStackTrace. А оттого, что не найден объект.
А зачем вы хотите что-то делать с исключениями?
  • 0

#8 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 24 октября 2019 - 11:50

 

Так работает метод printStackTrace() у объекта NoSuchElementException.

Если вам нужен только стектрейс, то берите его - e.getStackTrace() и делайте с ним что хотите.

в приведенном примере, я сам вызываю метод printStackTrace()

но что делать с исключениями, которые появляются в коде естественно, без моего намеренного их создания?

 

может есть какое нибудь property или capability, чтобы можно быть снизить количество выводимых псевдо ошибок?

 

 

вот оно, отсутствие базы по ЯП и core функциональности ЯП =)

 

то что вы оборачиваете в try catch и пытаетесь обработать исключение совершенно не значит, что если вы этого не сделаете программа как будто ничего не было проигнорирует исключение. она свалится с точно таким же исключением.

 

трайкетч, позволяет обходить/делать какие-то действия/"выключать ядерный реактор в случае отсутствия охладителя в системе" и подобные вещи.

 

все исключения выводятся в стектрейс потому что так работает ЯП, наличие исключений в стектрэйсе, говорит об ошибке либо о неучтённой вами ситуации (архитектурной проблеме)

для того чтобы читать только то что вам хочется не нужно работать со стектрэйсом, а нужно освоить библиотеку логирования вашего ЯП

 

 

Обновление:

вообще я тут не совсемправ в том что написал, но дляпонимания так проще.

полный стектрэйс любого ЯП очень избыточен, туда пишется вообще всё


  • 0

#9 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 821 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 24 октября 2019 - 14:21

Чем больше инфы в стектрейсе, тем лучше. Нужно понимать, что и как кого вызывало.
Надеюсь вы сами поняли, что вам надо изучать что такое try,catch, finally , throw , throws. Классы Errors, RuntimeException, IOException. Разница между checked/unchecked и т.п.
NoSuchElementException - это checked или unchecked  ? 

  • 0


Selenium 2.0: стартовый уровень
онлайн
Программирование на Java для тестировщиков
онлайн
Автоматизация функционального тестирования
онлайн
Selenium WebDriver: полное руководство
онлайн



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале