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

Фотография

Selenide. Запуск тестов на IDEA. Firefox profile

Selenide FF profile Firefox profile

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

#1 holydiverinc

holydiverinc

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

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Владимир Черный
  • Город:Киев

Отправлено 25 мая 2016 - 09:49

Из-под дефолтного браузера запускать не хочу - одна из причин - во время пробега тестов спрашивает разрешение на геолокацию, тест падает.

Как прописать в коде свой профайл? На Selenium делал -все ок, а Selenide только начал осваивать.


  • 0

#2 user12

user12

    Специалист

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


Отправлено 25 мая 2016 - 09:57

https://github.com/c...eates-WebDriver


  • 0

#3 holydiverinc

holydiverinc

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

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Владимир Черный
  • Город:Киев

Отправлено 25 мая 2016 - 10:03

я там не совсем догоняю что куда :( не программист но немного понимаю, если вижу написанный код, без всяких (DesiredCapabilities capabilities)


  • 0

#4 Vad1m198

Vad1m198

    Активный участник

  • Members
  • PipPip
  • 115 сообщений
  • ФИО:Вадим


Отправлено 25 мая 2016 - 10:36

Можно создать свой инстанс WebDriver и передать в Selenide с помощью метода 

WebDriverRunner.setWebDriver(/*WebDriver instance*/);


  • 0

#5 serjb9

serjb9

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

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

Отправлено 25 мая 2016 - 10:49

Два раза прочитал - и вроде кажется, что хотите профайл в FF сменить, и сразу кажется что нет.
Первая ссылка в гугле: http://toolsqa.com/s...irefox-profile/
Оно?
 
Для разнообразия можно загружать драйвер со стороны:

public WebDriver driver;

driver = loadFFwithProf();

public WebDriver loadFFWithProf() throws Exception { 
     ProfilesIni ini = new ProfilesIni();
     FirefoxProfile profile = ini.getProfile("ProfileName");
     profile.setPreference("prefName", "about:blank"); // можно запускать драйвер с какими-то preference
     return new FirefoxDriver(profile);
}

  • 1

#6 holydiverinc

holydiverinc

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

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Владимир Черный
  • Город:Киев

Отправлено 25 мая 2016 - 14:26

Спасибо! Теперь понятно =) буду пробовать


  • 0

#7 holydiverinc

holydiverinc

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

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Владимир Черный
  • Город:Киев

Отправлено 25 мая 2016 - 14:56

 

Два раза прочитал - и вроде кажется, что хотите профайл в FF сменить, и сразу кажется что нет.

Да, во время запуска теста ФФ запускает "нулевой" профиль, а мне надо, чтоб запускал мой браузер с настройками.

 

Вот код:

Какие предложения будут?

import com.codeborne.selenide.Condition;
import com.codeborne.selenide.Configuration;
import com.codeborne.selenide.Selenide;
import com.codeborne.selenide.WebDriverRunner;
import com.codeborne.selenide.junit.ScreenShooter;
import org.junit.Rule;
import org.junit.Test;
import org.openqa.selenium.By;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import static com.codeborne.selenide.Selenide.$;
import static com.codeborne.selenide.Selenide.open;

public class Registration {


    @Rule

    public ScreenShooter makeScreenshotOnFailure = ScreenShooter.failedTests();

    public void setUp() {
        Configuration.timeout = 30000;
        Configuration.reopenBrowserOnFail = true;

    }

    @Test


    public void registration() {

        DateFormat df = new SimpleDateFormat("ddMMyyyyHHmmss");
        Date today = Calendar.getInstance().getTime();
        String todayDate = df.format(today);
        String log = "qatestbw+" + todayDate + "@gmail.com";
        String pwd = "111111Qq";
        String baseUrl = "http://demo.yourtime.org.ua";

        open(baseUrl);
        $(By.xpath("/html/body/div[1]/div[1]/div/div[5]/div[2]")).waitUntil(Condition.visible, 30000).click();
        $(By.xpath("/html/body/div[5]/div[2]/table/tbody/tr/td[4]/div/img")).waitUntil(Condition.visible, 30000).click();
        $(By.xpath("//div[@id='ytLoginRegistration']/div/input")).waitUntil(Condition.visible, 30000).clear();
        $(By.xpath("//div[@id='ytLoginRegistration']/div/input")).waitUntil(Condition.visible, 30000).val(log);
        $(By.xpath("//div[@id='ytLoginRegistration']/div/input[2]")).waitUntil(Condition.visible, 30000).clear();
        $(By.xpath("//div[@id='ytLoginRegistration']/div/input[2]")).waitUntil(Condition.visible, 30000).val(pwd);
        $(By.xpath("//div[@id='ytLoginRegistration']/div/input[3]")).waitUntil(Condition.visible, 30000).clear();
        $(By.xpath("//div[@id='ytLoginRegistration']/div/input[3]")).waitUntil(Condition.visible, 30000).val(pwd);
        $(By.xpath("/html/body/div[5]/div[2]/div/div[3]/button")).waitUntil(Condition.visible, 30000).click();
        $(By.xpath("/html/body/div[11]/div[2]/div[2]/button")).waitUntil(Condition.visible, 30000).click();
        $(By.xpath("/html/body/div[1]/div[1]/div/div[3]/span[1]")).shouldHave(Condition.text(log));

        //разлогиниваемся
        $("#ytLogout").shouldBe(Condition.visible).waitUntil(Condition.visible, 30000).click();
        $("#popup_ok").shouldBe(Condition.visible).waitUntil(Condition.visible, 30000).click();
        WebDriverRunner.clearBrowserCache();
        Selenide.refresh();

        //залогиниваемся
        $("#ytLogin").shouldBe(Condition.visible).click();
        $(By.xpath("/html/body/div[5]/div[2]/div/div[2]/div/form/input[1]")).shouldBe(Condition.visible).val(log);
        $(By.xpath("/html/body/div[5]/div[2]/div/div[2]/div/form/input[2]")).shouldBe(Condition.visible).val(pwd);
        $(By.xpath("/html/body/div[5]/div[2]/div/div[2]/button")).shouldBe(Condition.visible).click();
        $("#globalStateLine").shouldHave(Condition.text(log));
       


}

  • 0

#8 Vad1m198

Vad1m198

    Активный участник

  • Members
  • PipPip
  • 115 сообщений
  • ФИО:Вадим


Отправлено 25 мая 2016 - 15:44

Создайте WebDriver с нужным профилем как Вы делали это на селениуме. Вызовите метод WebDriverRunner.setWebDriver() и передайте созданый WebDriver. Так пробовали?

 

$(By.xpath("/html/body/div[1]/div[1]/div/div[5]/div[2]")).waitUntil(Condition.visible, 30000).click();

Вот так лучше не делать.

1) Попробуйте переписать локатор чтобы он не зависел от строения страницы. Используйте id, class, name

2) Поскольку Вы уже указали Configuration.timeout = 30000; то не надо использовать waitUntil и явно указывать ожидание. Вместо этого используйте shouldBe(visible)

3) Зачем здесь Вы ждете 2 раза одно и тоже событие $("#ytLogout").shouldBe(Condition.visible).waitUntil(Condition.visible, 30000).click(); ?


  • 0

#9 holydiverinc

holydiverinc

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

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Владимир Черный
  • Город:Киев

Отправлено 26 мая 2016 - 07:42

Создайте WebDriver с нужным профилем как Вы делали это на селениуме. Вызовите метод WebDriverRunner.setWebDriver() и передайте созданый WebDriver. Так пробовали?

 

$(By.xpath("/html/body/div[1]/div[1]/div/div[5]/div[2]")).waitUntil(Condition.visible, 30000).click();

Вот так лучше не делать.

1) Попробуйте переписать локатор чтобы он не зависел от строения страницы. Используйте id, class, name

2) Поскольку Вы уже указали Configuration.timeout = 30000; то не надо использовать waitUntil и явно указывать ожидание. Вместо этого используйте shouldBe(visible)

3) Зачем здесь Вы ждете 2 раза одно и тоже событие $("#ytLogout").shouldBe(Condition.visible).waitUntil(Condition.visible, 30000).click(); ?

Буду пробовать.

1) к моему сожалению xpath отрабатывает лучше всего, у элементов может не быть "id, class, name", но советом воспользуюсь. 

2) у меня было shouldBe(visible), но не ждало столько, сколько указано timeout, поэтому припилил waitUntil. UPD выставлен timeout 30000, но ошибка при запуске - Element not found {.yt-login-ico-register selected-button}

Expected: visible
 
Screenshot: file:/C:/Users/chorniy/Test1/build/reports/tests/Registration/registration/1464249427827.0.png
Timeout: 4 s.
 
 

3) ошибочка, спасибо, поправил

 

я только учусь и делаю это, потому что мне нравится, на работе не требуют от меня автоматизации 


Сообщение отредактировал holydiverinc: 26 мая 2016 - 07:58

  • 0

#10 holydiverinc

holydiverinc

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

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Владимир Черный
  • Город:Киев

Отправлено 26 мая 2016 - 08:50

4 секунды было потому, что у метода setUp() не хватает аннотации @Before


  • 1



Темы с аналогичным тегами Selenide, FF profile, Firefox profile

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

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