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

Фотография

Проверка URL в новом окне


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

#1 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 13 декабря 2011 - 11:43

Здравствуйте!
Попал в следующую ситуацию. Есть ссылка после клика на которую открывается новое окно.
Пытаюсь проверить что открылась правильная страница, делаю это так:
void CheckPage(string url, string Comment)
    {

        LogFile = Log.AppendText();

        if (driver.Url == url)
        {

            LogFile.WriteLine("{0} Отображается верная страница:{1}- {2}", SystemMessage[0], driver.Url, Comment);
        }
        else
        {
            LogFile.WriteLine("{0} Отображается не верная страница: {1} (должно быть: {2})", SystemMessage[1], driver.Url, url);
        }

        LogFile.Close();
    }

Он проверят URL в том окошко откуда происходил клик. Как сделать так чтобы он проверял в открывшемся окне?
Думаю использовать следующее:
driver.SwitchTo().Window(name).Url
. Правда проблема в том что я имени окна не знаю :) Так что куда не сунусь везде тупик(но это пока так).
  • 0

#2 D2Phoenix

D2Phoenix

    Постоянный участник

  • Members
  • PipPipPip
  • 200 сообщений
  • ФИО:Чадюк Вадим
  • Город:Гродно


Отправлено 13 декабря 2011 - 12:11

public void switchToWindow(int numberWindow) {
                String handle = driver.getWindowHandles().toArray()[numberWindow]
                                .toString();
                driver.switchTo().window(handle);
}
switchToWindow(1);//переключаемся кот второму открытому окну
Код правда на Java
  • 0

#3 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 13 декабря 2011 - 12:31

public void switchToWindow(int numberWindow) {
                String handle = driver.getWindowHandles().toArray()[numberWindow]
                                .toString();
                driver.switchTo().window(handle);
}
switchToWindow(1);//переключаемся кот второму открытому окну
Код правда на Java

Спасибо! А что вы подключаете чтобы getWindowHandles() был доступен, а то я пишу правда на шарпе и у меня такого нет. Может просто что то не до подключил :)
  • 0

#4 D2Phoenix

D2Phoenix

    Постоянный участник

  • Members
  • PipPipPip
  • 200 сообщений
  • ФИО:Чадюк Вадим
  • Город:Гродно


Отправлено 13 декабря 2011 - 12:39

// This code assumes you start with only one browser window in your test.
// If you have more than one browser window, your code will be more complex.
string originalHandle = driver.GetWindowHandle();
driver.FindElement(By.ClassName("power_buy_now_button")).Click();

// May need to wait for window handles collection to have a .Count of 2,
// as clicks are asynchronous.
string popupHandle = string.Empty;
ReadOnlyCollection<string> windowHandles = driver.GetWindowHandles();
foreach (string handle in windowHandles)
{
    if (handle != originalHandle)
    {
        popupHandle = handle;
        break;
    }
}

driver.SwitchTo().Window(popupHandle);
// Do stuff in the popup window, eventually closing it with driver.Close()
driver.SwitchTo().Window(originalHandle);

Вот этот код должен работать. Точно нету GetWindowHandles()??
  • 0

#5 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 13 декабря 2011 - 12:56

// This code assumes you start with only one browser window in your test.
// If you have more than one browser window, your code will be more complex.
string originalHandle = driver.GetWindowHandle();
driver.FindElement(By.ClassName("power_buy_now_button")).Click();

// May need to wait for window handles collection to have a .Count of 2,
// as clicks are asynchronous.
string popupHandle = string.Empty;
ReadOnlyCollection<string> windowHandles = driver.GetWindowHandles();
foreach (string handle in windowHandles)
{
    if (handle != originalHandle)
    {
        popupHandle = handle;
        break;
    }
}

driver.SwitchTo().Window(popupHandle);
// Do stuff in the popup window, eventually closing it with driver.Close()
driver.SwitchTo().Window(originalHandle);

Вот этот код должен работать. Точно нету GetWindowHandles()??

А что вы используете в качестве драйвера(имеется ввиду какой драйвер). Я использую Фаерфокс, и там нету GetWindowHandles(), но там есть CurrentWindowHandle и WindowHandles . Как я понял мне нужно будет использовать WindowHandles .
  • 0

#6 D2Phoenix

D2Phoenix

    Постоянный участник

  • Members
  • PipPipPip
  • 200 сообщений
  • ФИО:Чадюк Вадим
  • Город:Гродно


Отправлено 13 декабря 2011 - 14:45

А что вы используете в качестве драйвера(имеется ввиду какой драйвер). Я использую Фаерфокс, и там нету GetWindowHandles(), но там есть CurrentWindowHandle и WindowHandles . Как я понял мне нужно будет использовать WindowHandles .

Пример, не мой) Но думаю вы правы)
  • 0

#7 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 14 декабря 2011 - 04:37

Всё получилось!!! Огромное спасибо D2Phoenix за предоставленный код. Я его чуть изменил и всё заработало.
public static string GetWindowURL()
    {
        string originalHandle = driver.CurrentWindowHandle;
        string popupHandle = string.Empty;
        string WindowURL;
        ReadOnlyCollection<string> windowHandles = driver.WindowHandles;

        foreach (string handle in windowHandles)
        {
            if (handle != originalHandle)
            {
                popupHandle = handle;
                break;
            }
        }

        WindowURL = driver.SwitchTo().Window(popupHandle).Url;
        driver.SwitchTo().Window(popupHandle).Close();
        driver.SwitchTo().Window(originalHandle);
        return WindowURL;
    }

  • 0


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

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