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

Фотография

Вопросу начинающего автотестера


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

#1 silexz

silexz

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

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Квасов Сергей Васильевич

Отправлено 04 октября 2013 - 20:06

Привет всем! Только недавно удалось настроить selenium и немедленно приступил к его изучению, начиная с самых простых задачек.
Я думаю сообщество автотестеров не будет против, если все возникающие на первоначальном этапе вопросы буду в одной теме писать.

Сразу к делу, у нас есть такой кусок HTML кода:

<span class="b-navigation-city__city">Москва</span>

Мне нужно вытащить название города

Использую такой код:

IWebElement classFind, tagFind;
            
driver.Navigate().GoToUrl(@"http://www.pogoda.yandex.ru/");
classFind = driver.FindElement(By.ClassName("b-navigation-city__city"));
System.Console.WriteLine("City: " + classFind);

Однако в консоле оказывается вот такая запись:
City: OpenQA.Selenium.Firefox.FirefoxWebElement

Подскажите пожалуйста, что не так делаю, почему не название города выводится?
  • 0

#2 user12

user12

    Специалист

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


Отправлено 04 октября 2013 - 20:27

Подскажите пожалуйста, что не так делаю, почему не название города выводится?


Попробуйте как-нибудь так:
System.Console.WriteLine("City: " + classFind.getText());

Вот хорошая статья:
http://bugscatcher.net/archives/1232
  • 0

#3 silexz

silexz

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

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Квасов Сергей Васильевич

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


Подскажите пожалуйста, что не так делаю, почему не название города выводится?


Попробуйте как-нибудь так:
System.Console.WriteLine("City: " + classFind.getText());

Вот хорошая статья:
http://bugscatcher.net/archives/1232


Ошибка 1 "OpenQA.Selenium.IWebElement" не содержит определение для "getText". Не удалось найти метод расширения "getText", принимающий первый аргумент типа "OpenQA.Selenium.IWebElement" (пропущена директива using или ссылка на сборку?) C:\Users\WorkS\Documents\Visual Studio 2012\Projects\TestDrive\TestDrive\Program.cs 40 48 TestDrive
  • 0

#4 user12

user12

    Специалист

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


Отправлено 04 октября 2013 - 21:23

Ну конечно :)
как-то так должно работать
String myText= driver.FindElement(By.ClassName("b-navigation-city__city")).getText();
System.Console.WriteLine("City: " + myText);
  • 0

#5 silexz

silexz

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

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Квасов Сергей Васильевич

Отправлено 04 октября 2013 - 22:43

Ну конечно :)
как-то так должно работать
String myText= driver.FindElement(By.ClassName("b-navigation-city__city")).getText();
System.Console.WriteLine("City: " + myText);


Ошибка 1 "OpenQA.Selenium.IWebElement" не содержит определения для "getText" и не был найден метод расширения "getText", принимающий тип "OpenQA.Selenium.IWebElement" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) C:\Users\WorkS\Documents\Visual Studio 2012\Projects\TestDrive\TestDrive\Program.cs 30 89 TestDrive

Возможно ли что эта ошибка возникает из-за того, что в VS Express не все функции присутствуют?
  • 0

#6 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 05 октября 2013 - 19:36

Читайте документацию:
http://selenium.goog...tnet/index.html
http://selenium.goog...lement_Text.htm

Нет метода getText, есть проперти Text
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#7 silexz

silexz

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

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Квасов Сергей Васильевич

Отправлено 07 октября 2013 - 06:49

Читайте документацию:
http://selenium.goog...tnet/index.html
http://selenium.goog...lement_Text.htm

Нет метода getText, есть проперти Text


Спасибо большое! Такой еще момент, мне нужно тест с помощью NUinit запускать, это нужно создавать отдельно Unit-test и туда уже впихивать мой код который выдергивает город с сайта?
Где можно почитать очень разъясняющую информацию о NUnit? И как им вообще пользоваться
  • 0

#8 silexz

silexz

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

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Квасов Сергей Васильевич

Отправлено 07 октября 2013 - 10:47


Читайте документацию:
http://selenium.goog...tnet/index.html
http://selenium.goog...lement_Text.htm

Нет метода getText, есть проперти Text


Спасибо большое! Такой еще момент, мне нужно тест с помощью NUinit запускать, это нужно создавать отдельно Unit-test и туда уже впихивать мой код который выдергивает город с сайта?
Где можно почитать очень разъясняющую информацию о NUnit? И как им вообще пользоваться

Ребят частично разобрался. Делаю так:
1) В ВС создаю dll библиотеку, пишу туда код авто-теста. Собираю дллку (F7).
2) В NUnit запускаю данную длл.
3) Смотрю результат.

Скажите, верно ли все делаю?

PS: Кстати с 24 фф тоже работает
  • 0

#9 checo

checo

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

  • Members
  • PipPipPipPip
  • 400 сообщений
  • Город:Н.Новгород

Отправлено 07 октября 2013 - 13:08

Ребят частично разобрался. Делаю так:
1) В ВС создаю dll библиотеку, пишу туда код авто-теста. Собираю дллку (F7).
2) В NUnit запускаю данную длл.
3) Смотрю результат.

Скажите, верно ли все делаю?


Ну работает же :wink:/>. Правильно или неправильно - сказать нельзя без полного кода теста.
Выше у Вас написано только логирование (System.Console...). Поэтому непонятно насчет "смотрю результат". Кроме лога должны быть еще Assert'ы, чтобы тест мог пройти или зафейлиться.
  • 0

#10 silexz

silexz

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

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Квасов Сергей Васильевич

Отправлено 07 октября 2013 - 13:50


Ребят частично разобрался. Делаю так:
1) В ВС создаю dll библиотеку, пишу туда код авто-теста. Собираю дллку (F7).
2) В NUnit запускаю данную длл.
3) Смотрю результат.

Скажите, верно ли все делаю?


Ну работает же :wink:/>/>. Правильно или неправильно - сказать нельзя без полного кода теста.
Выше у Вас написано только логирование (System.Console...). Поэтому непонятно насчет "смотрю результат". Кроме лога должны быть еще Assert'ы, чтобы тест мог пройти или зафейлиться.


using System;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Support.UI;
using NUnit.Framework;

    [TestFixture]
    public class MyTestLib
    {
        [Test]
        public void IsCityPenzaYandexPogoda()
        {
            IWebDriver driver = new FirefoxDriver();

            driver.Navigate().GoToUrl(@"http://www.pogoda.yandex.ru/"); //Заходим на яндекс.погода
            String myText = driver.FindElement(By.ClassName("b-navigation-city__city")).Text; //выдериваем с html-кода блок в котором хранится название города
            StringAssert.Contains("Пенза", myText); //Сравнием с "Пенза"
            driver.Quit();
        }

    }

В NUnit смотрю результат
  • 0

#11 silexz

silexz

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

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Квасов Сергей Васильевич

Отправлено 30 апреля 2014 - 13:14

Всем привет! Товарищи! На дня возникла необходимость переделать данный тест с помощью шаблона Page Object

Сделал следующее:

1) Создал новый класс для работы чисто с браузером

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Support.UI;

namespace Browser
{
    public class ClassBrowser
    {
        IWebDriver driver = new FirefoxDriver();
        public void CallBrowser()
        {
            driver.Navigate().GoToUrl(@"http://www.pogoda.yandex.ru/"); //Заходим на яндекс.погода
        }

        public void QuitBrowser()
        {
            driver.Quit();
        }
    }
}

2) Здесь подключил указанный выше класс и частично начал использовать его функции:

using System;
using System.Threading;
using System.Collections.Generic;
using NUnit.Framework;
using Browser;

[TestFixture]
public class MyTestLib
{
    [Test]
    public void IsCityPenzaYandexPogoda()
    {
        ClassBrowser ClassBrowser = new ClassBrowser();
        ClassBrowser.CallBrowser();
        String myText = driver.FindElement(By.ClassName("b-navigation-city__city")).Text; //выдериваем с html-кода блок в котором хранится название города
        StringAssert.Contains("Пенза", myText); //Сравнием с "Пенза"
        ClassBrowser.QuitBrowser();
    }
}

Но возник затык как и куда нужно выносить действия с нахождением элемента (b-navigation-city__city) на странице и вытаскивание из него значения с последующим сравнением с названием города

У вас отличный форум, надеюсь на помощь.


  • 0

#12 Papagatto

Papagatto

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

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Мальцев Александр
  • Город:Екатеринбург


Отправлено 05 мая 2014 - 11:30

В тесте вы обращаетесь к объекту driver, которого нет. 

Надо добавить в класс ClassBrowser метод поиска например FindElement(By locator).

 

И создайте ещё один класс описывающий работу со страницей, а из теста вызывайте методы этого класса. Погуглите и найдете много примеров использования паттерна PageObjects.
 


  • 0

#13 silexz

silexz

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

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Квасов Сергей Васильевич

Отправлено 07 мая 2014 - 06:34

В тесте вы обращаетесь к объекту driver, которого нет. 

Надо добавить в класс ClassBrowser метод поиска например FindElement(By locator).

 

И создайте ещё один класс описывающий работу со страницей, а из теста вызывайте методы этого класса. Погуглите и найдете много примеров использования паттерна PageObjects.
 

Спасибо за ответ! Переделал!


  • 0

#14 JohnWind

JohnWind

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

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

Отправлено 12 мая 2014 - 21:12

сори за копи-паст... надеюсь тут быстрее получить ответ:

 

Доброго времени суток всем... 

 

учу Selenium IDE ver. 2.5.0

 

есть задача: надо при вводе данных в поле (инпут) посредством type, надо выйти из поля посредством Tab или Enter

вопросы:

 

У меня в интерфейсе доступны:  Command /  Target / Value

 

что юзать как локатор? имя поля(id у него нет) 

как собственно передать Tab или Enter? 

(уже перепробовал кучу комбинаций, включая отправку \9 и \13 в кавычках и без в поле Value - всё не то)

 

Заранее спасибо


  • 0

#15 BabyRoot

BabyRoot

    Специалист

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


Отправлено 13 мая 2014 - 06:50

Энтер - \n

Таб - \t

т.е.  твой текст "текст\n" или "текст\t"


  • 0

#16 Aleksey.Vlasov

Aleksey.Vlasov

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

  • Members
  • Pip
  • 24 сообщений
  • ФИО:Власов А.

Отправлено 13 мая 2014 - 08:35

Энтер - \n

Таб - \t

т.е.  твой текст "текст\n" или "текст\t"

Ну вообще \n - это перенос текста на другую строку в поле ввода.

А, как я понял, нужен именно выход из поля, например, TAB'ом (переход на другое поле)


  • 0

#17 JohnWind

JohnWind

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

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

Отправлено 13 мая 2014 - 09:30

 

Энтер - \n

Таб - \t

т.е.  твой текст "текст\n" или "текст\t"

Ну вообще \n - это перенос текста на другую строку в поле ввода.

А, как я понял, нужен именно выход из поля, например, TAB'ом (переход на другое поле)

 

 

Именно так Алексей... мне надо выйти из поля (инпута) в которое я ранее ввёл текст (type)

и выйти надо или Таб-ом или Ентер-ом


  • 0

#18 Aleksey.Vlasov

Aleksey.Vlasov

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

  • Members
  • Pip
  • 24 сообщений
  • ФИО:Власов А.

Отправлено 13 мая 2014 - 10:08

 

 

Энтер - \n

Таб - \t

т.е.  твой текст "текст\n" или "текст\t"

Ну вообще \n - это перенос текста на другую строку в поле ввода.

А, как я понял, нужен именно выход из поля, например, TAB'ом (переход на другое поле)

 

 

Именно так Алексей... мне надо выйти из поля (инпута) в которое я ранее ввёл текст (type)

и выйти надо или Таб-ом или Ентер-ом

 

Я ответил (изменил ответ) в другой теме.

Всё это делается одним действием:

sendKeys | локатор поля ввода | нужный текст${KEY_ENTER}


  • 0

#19 JohnWind

JohnWind

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

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

Отправлено 13 мая 2014 - 10:13

спасибо за помощь Алексей.


  • 0

#20 missial

missial

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

  • Members
  • Pip
  • 11 сообщений
  • ФИО:Алексеев Пётр Геннадьевич

Отправлено 15 мая 2014 - 11:01

Подскажите пожалуйста, как найти только текст "localsite" в данном коде?

<label id="caf4db7c-b5ba-4f86-a815-140015123370-cd455d28-1b92-4255-98ae-140015028539-label" class="tree-toggle siteItem tree-toggle-open" site-uuid="{9c80f8c9-7bd7-4019-b0b6-e23d23748238}">
localsite 
<span id="cd455d28-1b92-4255-98ae-140015028539-badge" class="quantity badge">1</span>
</label>

Когда пытаюсь получить текст через метод text, то он мне выдает "localsite" и "1". Знаю, что можно отсортировать и прочее, просто хочется компактного и красивого кода


  • 0


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

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