На сайте селенида не смог найти информации о логгировании и сохранении в файл ошибок из консоли хрома. На AT беглый поиск тоже не дал результатов. Помогите, ткните в туториал или подскажите куда какие строки нужно добавить. спасибо заранее.
В хроме, вроде как работает, но не полностью.
LogEntries logEntries = driver.manage().logs().get(LogType.BROWSER);
добавлять в @Before?
куда будут выводиться логи?в консоль ide?
Логи будут выводиться в logEntries.
Спасибо огромное! Только появилась новая проблема - на каждый метод открывается по новому окну браузера селениумом. И логи выводятся только от окон, открытых селениумом, а не селенидом
Доступ к драйверу в селениде - WebDriverRunner.getWebDriver().manage() - вот замените на это driver.manage()
я правильно понимаю, что LogEntries logEntries = WebDriverRunner.getWebDriver().manage().logs().get(LogType.BROWSER);
начинает писать логи и складывать их в logEntries. В конце отчета, например методом @After я выведу их System.out.println(logEntries);
? Непонято где должен находиться `LogEntries logEntries = WebDriverRunner.getWebDriver().manage().logs().get(LogType.BROWSER);. в @Before или в первом методе или в начале класса?
Понимаете правильно.
Поставить это дело после открытия браузера.
сейчас не могу вывести logEntries. Может, вам удобнее будет помось мне, если я скину весь код или залью как проектик на гитхаб?
на данный момент тест выглядит так
import com.codeborne.selenide.Condition;
import com.codeborne.selenide.Configuration;
import com.codeborne.selenide.WebDriverRunner;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.logging.LogEntries;
import org.openqa.selenium.logging.LogType;
import static com.codeborne.selenide.Selenide.*;
public class Test1 {
@Test
public void additional(){
open("какой-то сайт");
LogEntries logEntries = WebDriverRunner.getWebDriver().manage().logs().get(LogType.BROWSER);
Configuration.holdBrowserOpen = true;
Configuration.timeout=10000;
$(By.name("Password")).val("Qwerty1");
$(By.name("button")).click();
$(By.cssSelector(".sidebar__controls__item > .tab-link")).click();
$(By.cssSelector("#navigator > div > div.navigator__main > div.navigator__main__content > div > div > button:nth-child(1)")).doubleClick();
$(By.xpath("//span[contains(.,'katalon t1')]")).doubleClick();
$(By.className("ui-add__trigger")).click();
$(By.linkText("Справочник")).click();
$(By.className("center-block__button")).shouldBe(Condition.enabled).click();
$(By.cssSelector(".btn-primary")).click();
//sleep(1000);
$(By.cssSelector(".ui-iconbutton:nth-child(13)")).shouldBe(Condition.enabled).click();
$(By.xpath("//td[2]/div")).doubleClick();
$(By.cssSelector("#editorForm > .ng-untouched")).shouldBe(Condition.visible).val("перекресток");
$(By.cssSelector(".-save")).click();
sleep(500);
$(By.cssSelector(".-save")).click();
System.out.println(logEntries);
}
}
Замените это на это:
for (LogEntry log:logEntries) {
System.out.println(log.getTimestamp() + " " + log.getLevel() + " " + log.getMessage());
}
а в случае, если js ошибок не было что то должно возвращаться?
Не знаю, у меня SEVERE и INFO выводились, на счет ERROR не знаю, надо смотреть.
Все равно не выводится, но да ладно. Попробую еще сам поразбираться. Но спасибо огромное за подсказки
разобрался. помогло следующее: в начале метода, после открытия страницы
Logs logs = WebDriverRunner.getWebDriver().manage().logs();
LogEntries logEntries = WebDriverRunner.getWebDriver().manage().logs().get(LogType.BROWSER);
в конце метода
for (LogEntry logEntry : logEntries) {
System.out.println(logEntry.getMessage());
}
так же была какая то проблема с slf4j. в консоь падала ошибка
“SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See SLF4J Error Codes for further details.”
добавил в pom.xml
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.8.0-beta2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.8.0-beta2</version>
<scope>test</scope>
</dependency>