Учебники

Watir — Краткое руководство

Watir — Обзор

Watir (Тестирование веб-приложений на Ruby), произносится как «Water» — это инструмент с открытым исходным кодом, разработанный с использованием Ruby, который помогает автоматизировать веб-приложения, которые подходят для приложений, разработанных на любом языке программирования. Браузеры для установки Watir поддерживаются Internet Explorer, Firefox, Chrome, Safari и Edge. Watir доступен как Rubygems для установки.

Watir подключится к указанному браузеру и выполнит инструкции по открытию URL-адреса, нажатию на кнопку, вводу данных в текстовое поле, как это сделает любой реальный человек. Watir чаще всего используется для поддержки браузеров с такими средами тестирования, как RSpec, Cucumber и т. Д.

Особенности Watir

Watir богат функциями, как описано ниже —

Расположение веб-элементов. Существуют различные способы поиска веб-элементов, отображаемых в браузере. В основном используются идентификатор, класс, имя тега, пользовательские атрибуты, метка и т. Д.

Делая скриншоты — Watir позволяет вам делать скриншоты с тестированием, выполненным по мере необходимости Это помогает отслеживать промежуточное тестирование.

Производительность страницы. Вы можете легко измерить производительность страницы, используя объект производительности, который имеет такие свойства, как performance.navigation, performance.timing, performance.memory и performance.timeOrigin . Эти детали получаются при подключении к браузеру.

Объекты страницы — Объект страницы в Watir поможет нам повторно использовать код в виде классов. Используя эту функцию, мы можем автоматизировать наше приложение, не дублируя код, а также сделать его управляемым.

Загрузка — с Watir легко проверить загрузку файлов для пользовательского интерфейса или веб-сайта.

Оповещения — Watir предоставляет простые в использовании API для тестирования всплывающих оповещений в вашем интерфейсе или на веб-сайте.

Безголовое тестирование — используя безголовое тестирование, детали получают в командной строке без необходимости открывать браузер. Это помогает выполнять тестовые примеры пользовательского интерфейса в командной строке.

Преимущества использования Watir

Watir предлагает следующие преимущества —

  • Watir — это инструмент с открытым исходным кодом, очень простой в использовании.

  • Watir разработан на Ruby, и любое веб-приложение, которое работает в браузере, можно легко автоматизировать с помощью watir.

  • Все последние браузеры поддерживаются в Watir, что облегчает тестирование.

  • Watir имеет встроенные библиотеки для проверки производительности страницы, предупреждений, тестирования iframes, окон браузера, создания снимков экрана и т. Д.

Watir — это инструмент с открытым исходным кодом, очень простой в использовании.

Watir разработан на Ruby, и любое веб-приложение, которое работает в браузере, можно легко автоматизировать с помощью watir.

Все последние браузеры поддерживаются в Watir, что облегчает тестирование.

Watir имеет встроенные библиотеки для проверки производительности страницы, предупреждений, тестирования iframes, окон браузера, создания снимков экрана и т. Д.

Недостатки Watir

Как и любое другое программное обеспечение, Watir также имеет свои ограничения

  • Watir поддерживается только для среды тестирования Ruby и не может использоваться с другими системами тестирования.

  • Мобильное тестирование с использованием Watir не улучшено, и настольные браузеры имитируются так, чтобы вести себя как мобильные браузеры, а не как устройства реального времени.

Watir поддерживается только для среды тестирования Ruby и не может использоваться с другими системами тестирования.

Мобильное тестирование с использованием Watir не улучшено, и настольные браузеры имитируются так, чтобы вести себя как мобильные браузеры, а не как устройства реального времени.

Watir — Введение

Watir (Тестирование веб-приложений на Ruby), произносится как «Вода» — это инструмент с открытым исходным кодом, разработанный с использованием Ruby, который помогает автоматизировать веб-приложение независимо от того, на каком языке написано приложение. Watir поставляется с богатым набором API-интерфейсов, которые помогают нам взаимодействовать с браузером, находить элементы страницы, делать скриншоты, работать с оповещениями, загрузками файлов, всплывающими окнами window.open , тестированием в автономном режиме и т. Д.

Поддерживаемые браузеры —

  • Internet Explorer
  • Fire Fox
  • Хром
  • Сафари
  • край

Примечание. Watir доступен для установки в виде гема Rubygems.

Используя веб-драйвер Watir, вы можете тестировать свои веб-сайты и приложения пользовательского интерфейса. Поскольку Watir полностью сосредоточен на материалах, связанных с браузером, вы можете использовать Watir вместе с другими тестовыми средами, такими как —

  • RSpec
  • Огурец

Основной тестовый код будет написан с использованием тестовой среды, а взаимодействие с браузером будет осуществляться с помощью Watir.

Поток тестовой структуры вместе с Watir как показано ниже —

Rubygems

RSpec или Cucumber участвуют в тестировании и тестовом коде. Подробная информация о тестировании веб-сайта или пользовательского интерфейса может быть разбита на объект страницы, который будет иметь ссылку на Watir, где он получит локаторы страниц, которые будут использоваться для тестирования. Watir вместе со своим веб-драйвером помогает подключаться к браузеру и выполнять автоматизацию тестирования.

Watir — Настройка среды

Для работы с Watir нам необходимо установить следующее:

  • Установите Ruby
  • Установить Watir
  • Рубиновая шахта (IDE)

Поскольку Watir собирается с использованием Ruby, нам нужно установить Ruby и gem (менеджер пакетов для Ruby).

Установка Ruby в Windows

Чтобы установить Ruby в Windows, перейдите по ссылкеhttps://rubyinstaller.org/downloads/

Установка Ruby

Установите версию ruby ​​на основе вашей 32- или 64-битной операционной системы. Здесь мы установили выделенный, как показано на скриншоте. Как только вы загрузите его, следуйте инструкциям в соответствии с инструкциями и установите их соответствующим образом

Когда вы закончите установку, проверьте, установлен ли ruby, проверив версию в командной строке, как показано ниже —

C:\> ruby -v

Если Ruby успешно установлен, вы можете увидеть вывод, как показано ниже —

Ruby установлен

Версия установлена ​​2.6.3. Мы успешно установили Ruby в нашей системе. Наряду с установкой Ruby, также устанавливается менеджер пакетов ruby. Вы можете проверить версию установленного гема следующим образом:

Ruby Package Manager

Мы закончили с установкой Ruby и Gem на Windows.

Установка Ruby в Linux

Для установки Ruby в Linux выполните следующие команды в своем терминале Linux —

wget -O ruby-install-0.6.0.tar.gz https://github.com/postmodern/ruby-install/archive/v0.6.0.tar.gz
tar -xzvf ruby-install-0.6.0.tar.gz
cd ruby-install-0.6.0/
sudo make install
ruby-install ruby 2.5.3

Установка Ruby для Mac

Для установки Ruby в Linux выполните следующие команды в своем терминале Mac:

Установить xcode

xcode-select --install

Установить HomeBrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Установить rbenv

brew install rbenv
rbenv init
touch ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
rbenv install 2.5.3
rbenv local 2.5.3

Установка Watir

Команда для установки watir —

gem install watir

драгоценный камень установить watir

Затем вы можете наблюдать экран вывода, как показано ниже —

Установка Watir

RubyMine IDE

Мы будем использовать RubyMine IDE для написания и выполнения наших тестов. Официальный веб-сайт RubyMine IDE — www.jetbrains.com/ruby .

RubyMine IDE

RubyMine — платная среда разработки с 30-дневной бесплатной пробной версией. Нажмите на кнопку бесплатной пробной версии, чтобы скачать. Вы также можете использовать другую IDE по вашему выбору для написания тестовых случаев.

При нажатии на кнопку бесплатной пробной версии, он начнет загрузку. После завершения загрузки установите его в своей системе.

Установка RubyMine

Нажмите Далее и продолжите установку. После завершения установки откройте IDE, и он попросит вас создать проект, как показано ниже —

RubyMine установлен

Нажмите «Создать новый проект», мы ввели имя проекта как Watir, и вот оно в IDE —

Новый проект

Мы напишем наши тесты в папке watir / и выполним их.

Watir — Установка драйверов для браузеров

В этой главе мы собираемся установить драйверы браузера, которые нам нужны для тестирования нашего проекта с использованием Watir. До Watir 6 нам приходилось включать watir-webdriver для использования драйверов браузера. С выпуском Watir 6 watir-webdriver доступен как часть пакета Watir, и пользователям не нужно добавлять watir-webdriver отдельно.

Браузеры, такие как Chrome, Firefox и Safari, доступны по умолчанию, и вам не нужно добавлять их извне. Если во время тестирования у вас возникнет проблема, что драйвер для браузера недоступен, вы всегда можете скачать их, как указано ниже.

Мы собираемся установить драйверы для следующих браузеров —

  • Драйвер для браузеров — Chrome
  • Драйвер для браузеров — Firefox
  • Драйвер для браузеров — Edge
  • Драйвер для браузеров — Internet Explorer
  • Драйвер для браузеров — Safari

Драйвер для браузера — Chrome

Чтобы получить драйвер для браузера Chrome, перейдите по адресуhttps://sites.google.com/a/chromium.org/chromedriver/downloads .

Браузер драйверов

Проверьте версию своего браузера и, соответственно, загрузите драйвер Chrome. Чтобы проверить версию вашего браузера Chrome, сделайте, как показано здесь —

Chrome драйвер

Нажмите «О Google Chrome», и появится версия Chrome, как показано ниже.

Версия Chrome

Итак, наша версия 74. Итак, скачайте Chrome Driver версии 74.

Скачать Chrome Driver

Затем загрузите драйвер Chrome в зависимости от вашей операционной системы. Мы скачаем chromedriver_win32.zip, он предназначен как для 32-битных, так и для 64-битных машин. Если вы планируете использовать загруженный драйвер, добавьте местоположение в переменную PATH.

Драйвер для браузера — Firefox

Для драйвера Firefox перейдите по адресуhttps://github.com/mozilla/geckodriver/releases, как показано на скриншоте ниже —

Скачать Firefox

В соответствии с вашей операционной системой, загрузите драйвер, как показано выше. Если вы планируете использовать загруженный драйвер, добавьте местоположение в переменную PATH.

Драйвер для браузера — Edge

Для драйвера Firefox перейдите по адресуhttps://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/, как показано на снимке экрана ниже —

Driver Browser Edge

Нажмите на версию Microsoft Edge, как показано ниже —

Microsoft Edge

Нажмите на ссылку Release, и он перенаправит вас на:

Номер версии

Здесь вы можете найти версию для загрузки, доступную для Windows. Если вы планируете использовать загруженный драйвер, добавьте местоположение в переменную PATH.

Драйвер для браузера — Internet Explorer

Чтобы установить драйвер для Internet Explorer, перейдите по адресуhttps://docs.seleniumhq.org/download/, как показано ниже —

Internet Explorer

Детали для секции загрузки на IE показаны здесь —

Скачать раздел

В соответствии с вашей ОС загрузите 32- или 64-разрядную версию Windows IE. Также добавьте местоположение к вашей переменной PATH, чтобы использовать драйвер.

Драйверы для браузеров — Safari

Драйверы для Safari не требуется загружать извне для Safari версии 10 и выше. Они загружаются вместе с пакетом gem при установке Watir.

Обратите внимание, что драйверы для Chrome, Firefox, Internet Explorer также доступны при установке Watir. Но если вы столкнулись с какими-либо проблемами и нуждаетесь в тестировании конкретной версии, вы можете скачать их в соответствии с вашим браузером и обновить местоположение в PATH, чтобы использовать его при тестировании вашего приложения.

Watir — Работа с браузерами

По умолчанию Watir открывает браузер Chrome, если имя браузера не указано. Необходимые драйверы браузера устанавливаются вместе с установкой Watir. В случае возникновения каких-либо проблем при работе с браузерами, установите драйвер, как показано в главе «Драйверы браузеров», и обновите расположение в переменной PATH.

В этой главе мы поймем, как открыть браузер с помощью Watir.

Шаги, чтобы открыть браузер с помощью Watir

Откройте IDE RubyMine и создайте новый файл: test1.rb

Браузер с использованием Watir

IDE RubyMine

Выберите OK и выберите шаблон файла как ruby, как показано ниже —

Шаблон файла

Нажмите OK, чтобы создать файл.

Теперь мы напишем простой код, который откроет браузер, как показано ниже —

test1.rb

require 'watir'
Watir::Browser.new

Простой код

Нажмите на кнопку Run, которая выделена в IDE, как показано выше. При нажатии кнопки «Выполнить» откроется браузер, как показано ниже.

Кнопка запуска

Браузер откроется и закроется автоматически. Давайте теперь добавим еще немного кода в test1.rb.

Мы можем указать имя браузера, как показано ниже —

Пример для Chrome

require 'watir'
Watir::Browser.new :chrome

Теперь давайте откроем URL-адрес страницы в нашем тестовом примере.

пример

require 'watir'
browser = Watir::Browser.new
browser.goto("https://www.google.com")

Нажмите Run, чтобы увидеть результат, как показано ниже —

Тестовый вывод

Точно так же вы можете открыть браузер Firefox, Safari, Internet Explorer.

Пример для Firefox

require 'watir'
Watir::Browser.new :firefox

Пример для Firefox

Пример для Internet Explorer

Код Watir

require 'watir'
browser = Watir::Browser.new :ie
browser.goto("https://www.google.com")

Когда мы запускаем код, появляется следующая ошибка —

Unable to find IEDriverServer. Please download the server from
(Selenium::WebDriver::Error::WebDriverError)

http://selenium-release.storage.googleapis.com/index.html and place it
somewhere on your PATH.

More info at
https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver.

Это означает, что пакет watir не имеет драйвера InternetExplorer. Мы скачали то же самое отсюда — https://docs.seleniumhq.org/download/ и обновили переменную PATH.

Теперь запустите его снова, чтобы увидеть, как открывается браузер Internet Explorer, как показано ниже —

Открытие браузера обозревателя

Watir код, чтобы открыть браузер Safari

require 'watir'
browser = Watir::Browser.new :safari
browser.goto("https://www.google.com")

Код Watir для браузера Microsoft Edge

require 'watir'
browser = Watir::Browser.new :edge
browser.goto("https://www.google.com")

Watir — веб-элементы

В этой главе мы обсудим, как работать со следующими в Watir:

  • Работа с текстовыми полями
  • Работа с комбо
  • Работа с радио-кнопками
  • Работа с флажками
  • Работа с кнопками
  • Работа со ссылками
  • Работа с Div’s

Работа с текстовыми полями

Синтаксис

browser.text_field id: 'firstname' // will get the reference of the textbox

Здесь попытаемся понять, как работать с текстовыми полями в пользовательском интерфейсе.

Рассмотрим страницу Textbox.html, как показано ниже —

<html>
   <head>
      <title>Testing UI using Watir</title>
   </head>
   
   <body>
      <script type = "text/javascript">
         function wsentered() {
            console.log("inside wsentered");
            var firstname = document.getElementById("firstname");
            if (firstname.value != "") {
               document.getElementById("displayfirstname").innerHTML = 
                  "The name entered is : " + firstname.value;
                  
               document.getElementById("displayfirstname").style.display = "";
            }
         }
      </script>
      
      <div id = "divfirstname">
         Enter First Name : 
         <input type = "text" id = "firstname" name = "firstname" onchange = "wsentered()" />
      </div>
      <br/>
      <br/>
      <div style = "display:none;" id = "displayfirstname"></div>
   </body>
</html>

Соответствующий вывод как показано ниже —

Работа с текстовыми полями

У нас есть текстовое поле, когда вы вводите имя, событие onchange запускается, и имя отображается ниже.

Теперь давайте напишем код, в котором мы найдем текстовое поле, введем имя и запустим событие onchange.

Код Watir

require 'watir'
b = Watir::Browser.new :chrome
b.goto('http://localhost/uitesting/textbox.html')
t = b.text_field id: 'firstname'
t.exists?
t.set 'Riya Kapoor'
t.value
t.fire_event('onchange')

Мы используем браузер Chrome и передаем Pageurl как http: //localhost/uitesting/textbox.html .

Использование браузера goto api откроет Pageurl, и мы найдем текстовое поле с id: firstname. Если это существует, мы установим значение как Riya Kapoor и будем использовать fire_event api для запуска события onchange.

Теперь давайте запустим код для отображения вывода, как показано ниже —

Работа с TextBoxes Run

Работа с TextBoxes Выполнить вывод

Работа с комбо

Синтаксис

browser.select_list id: 'months' // will get the reference of the dropdown

Тестовая страница, которую мы собираемся протестировать, показана здесь —

<html>
   <head>
      <title>Dropdown</title>
   </head>
   
   <body>
      <script type = "text/javascript">
         function wsselected() {
            var months = document.getElementById("months");
            
            if (months.value != "") {
               document.getElementById("displayselectedmonth").innerHTML = 
                  "The month selected is : " + months.value;
               
               document.getElementById("displayselectedmonth").style.display = "";
            }
         }
      </script>
      <form name = "myform" method = "POST">
         <div>
            Month is :
            <select name = "months" id = "months" onchange = "wsselected()">
               <option value = "">Select Month</option>
               <option value = "Jan">January</option>
               <option value = "Feb">February</option>
               <option value = "Mar">March</option>
               <option value = "Apr">April</option>
               <option value = "May">May</option>
               <option value = "Jun">June</option>
               <option value = "Jul">July</option>
               <option value = "Aug">August</option>
               <option value = "Sept">September</option>
               <option value = "Oct">October</option>
               <option value = "Nov">November</option>
               <option value = "Dec">December</option>
            </select>
         </div>
         <br/>
         <br/>
         
         <div style = "display:none;" id = "displayselectedmonth">
         </div>
   </body>
</html>

Выход

Работа с комбо

Когда вы выбираете месяц из выпадающего списка, то же самое отображается ниже.

Давайте теперь проверим то же самое с помощью Watir.

Код Watir для выбора комбо

require 'watir'
b = Watir::Browser.new :chrome
b.goto('http://localhost/uitesting/combos.html')
t = b.select_list id: 'months'
t.exists?
t.select 'September'
t.selected_options
t.fire_event('onchange')

Для работы с комбо, вам нужно найти элемент select с помощью b.select_list api, за которым следует идентификатор выпадающего списка. Чтобы выбрать значение из выпадающего списка, вам нужно использовать t.select и желаемое значение.

Выход на исполнение выглядит следующим образом —

Работа с комбинированным выводом

Работа с радио-кнопками

Синтаксис

browser.radio value: 'female' 
// will get the reference of the radio button with value “female”

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

<html>
   <head>
      <title>Testing UI using Watir</title>
   </head>
   
   <body>
      <form name = "myform" method = "POST">
         <b>Select Gender?</b>
         <div>
            <br/>
            <input type = "radio" name = "gender" value = "male" checked> Male
            <br/>
            <input type = "radio" name = "gender" value = "female"> Female
            <br/>
         </div>
      </form>
   </body>
   
</html>

Работа с радио-кнопками

Мы выберем переключатель со значением Женский, как показано в коде Watir —

require 'watir'
b = Watir::Browser.new
b.goto('http://localhost/uitesting/radiobutton.html')
t = b.radio value: 'female'
t.exists?
t.set
b.screenshot.save 'radiobutton.png'

Чтобы работать с переключателем, нам нужно сообщить браузеру о значении, которое мы выбираем, т.е. значение b.radio: ”female”

Мы также делаем снимок экрана и сохранили его как radiobutton.png, и то же самое отображается ниже —

Работа с выводом радио кнопок

Работа с флажками

Синтаксис

browser. checkbox value: 'Train' 
// will get the reference of the checkbox with value “Train”

Вот тестовая страница для флажков —

<html>
   <head>
      <title>Testing UI using Watir</title>
   </head>
   
   <body>
      <form name = "myform" method = "POST">
         <b>How would you like to travel?</b>
         <div>
            <br>
            <input type = "checkbox" name = "option1" value = "Car"> Car<br>
            <input type = "checkbox" name = "option2" value = "Bus"> Bus<br>
            <input type = "checkbox" name = "option3" value = "Train"> Train<br>
            <input type = "checkbox" name = "option4" value = "Air"> Airways<br>
            <br>
         </div>
      </form>
   </body>
   
</html>

Работа с флажками

Теперь давайте используем Watir, чтобы найти флажок в браузере, как показано ниже —

require 'watir'
b = Watir::Browser.new
b.goto('http://localhost/uitesting/checkbox.html')
t = b.checkbox value: 'Train'
t.exists?
t.set
b.screenshot.save 'checkbox.png'

Чтобы найти флажок в браузере, используйте b.checkbox со значением, которое вы хотите выбрать.

Работа с выводом флажков

Работа с кнопками

Синтаксис

browser.button(:name => "btnsubmit").click
// will get the reference to the button element with has name “btnsubmit”

Вот тестовая страница для кнопки —

<html>
   <head>
      <title>Testing UI using Watir</title>
   </head>
   
   <body>
      <script type = "text/javascript">
         function wsclick() {
            document.getElementById("buttondisplay").innerHTML = "Button is clicked";
            document.getElementById("buttondisplay").style.display = "";
         }
      </script>
      
      <form name = "myform" method = "POST">
         <div>
            <br>
            <input type = "button" id = "btnsubmit" name = "btnsubmit"
               value = "submit" onclick = "wsclick()"/>
            <br>
         </div>
      </form>
      <br/>
      
      <div style = "display:none;" id = "buttondisplay"></div>
   </body>
   
</html>

Работа с кнопками

Вот код Watir, чтобы найти кнопку на данной странице —

require 'watir'
b = Watir::Browser.new
b.goto('http://localhost/uitesting/button.html')
b.button(:name => "btnsubmit").click
b.screenshot.save 'button.png'

Вот скриншот button.png

кнопка

Работа со ссылками

Синтаксис

browser.link text: 'Click Here' 
// will get the reference to the a tag with text ‘Click Here’

Мы будем использовать следующую тестовую страницу для тестирования ссылок —

<html>
   <head>
      <title>Testing UI using Watir</title>
   </head>
   <body>
      <br/>
      <br/>
      <a href = "https://www.google.com">Click Here</a>
      <br/>
   </body>
</html>

Работа со ссылками

Детали Watir, необходимые для тестирования ссылок, приведены ниже:

require 'watir'
b = Watir::Browser.new
b.goto('http://localhost/uitesting/links.html')
l = b.link text: 'Click Here'
l.click
b.screenshot.save 'links.png'

Выход

Работа с выводом ссылок

Работа с выходами ссылок

Работа с Div’s

Синтаксис

browser.div class: 'divtag' 
// will get the reference to div with class “divtag”

Тестовая страница, где мы можем проверить на div.

<html>
   <head>
      <title>Testing UI using Watir</title>
      <style>
         .divtag {
            color: blue;
            font-size: 25px;
         }
      </style>
   </head>
   
   <body>
      <br/>
      <br/>
      <div class = "divtag"> UI Testing using Watir </div>
      <br/>
   </body>
</html>

Выход

Работа с Div

Код Watir для проверки div показан здесь —

require 'watir'
b = Watir::Browser.new
b.goto('http://localhost/uitesting/div.html')
l = b.div class: 'divtag'
l.exists?
l.text
b.screenshot.save 'divtag.png'

Выход

Работа с Div-выводом

Watir — поиск веб-элементов

В Watir для тестирования вам нужно найти элементы, и это можно сделать разными способами — с помощью идентификатора, класса или текста элемента.

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

Использование идентификатора элемента

Тестовая страница

<html>
   <head>
      <title>Testing UI using Watir</title>
   </head>
   
   <body>
      <script type = "text/javascript">
         function wsentered() {
            console.log("inside wsentered");
            var firstname = document.getElementById("firstname");
            
            if (firstname.value != "") {
               document.getElementById("displayfirstname").innerHTML = 
                  "The name entered is : " + firstname.value;
               
               document.getElementById("displayfirstname").style.display = "";
            }
         }
      </script>
      
      <div id = "divfirstname">
         Enter First Name : 
         <input type = "text" id = "firstname" name = "firstname" onchange = "wsentered()" />
      </div>
      <br/>
      <br/>
      <div style = "display:none;" id = "displayfirstname">
      </div>
   </body>
</html>

пример

require 'watir'
b = Watir::Browser.new :chrome
b.goto('http://localhost/uitesting/textbox.html')
t = b.text_field(id: 'firstname') // using the id of the textbox to locate the textbox
t.exists?
t.set 'Riya Kapoor'
b.screenshot.save 'textboxbefore.png'
t.value
t.fire_event('onchange')
b.screenshot.save 'textboxafter.png'

В этом примере мы используем id элемента textbox, чтобы найти его и установить значение.

t = b.text_field(id: 'firstname')

Выход

Используя ID

Использование ID элемента

Если вам нужно найти тег div, span или любой другой html-тег, вы можете сделать то же самое, используя id, следующим образом:

Для див

browser.div(id: "divid")
browser.div(id: /divid/)

Для пролета

browser.span(id: "spanid")
browser.span(id: /spanid/)

Используя НАИМЕНОВАНИЕ элемента

Тестовая страница

<html>
   <head>
      <title>Testing UI using Watir</title>
   </head>
   
   <body>
      <script type = "text/javascript">
         function wsentered() {
            console.log("inside wsentered");
            var firstname = document.getElementById("firstname");
            
            if (firstname.value != "") {
               document.getElementById("displayfirstname").innerHTML = 
                  "The name entered is : " + firstname.value;
               
               document.getElementById("displayfirstname").style.display = "";
            }
         }
      </script>
      
      <div id = "divfirstname">
         Enter First Name : 
         <input type = "text" id = "firstname" name = "firstname" onchange = "wsentered()" />
      </div>
      <br/>
      <br/>
      <div style = "display:none;" id = "displayfirstname">
      </div>
   </body>
</html>

пример

require 'watir'
b = Watir::Browser.new :chrome
b.goto('http://localhost/uitesting/textbox.html')
t = b.text_field(name: 'firstname') // name is used to locate the textbox element
t.exists?
t.set 'Riya Kapoor'
b.screenshot.save 'textboxbefore.png'
t.value
t.fire_event('onchange')
b.screenshot.save 'textboxafter.png'

Выход

Используя ID

Использование ID элемента

Использование имени тега

Вы можете найти любые html-элементы, которые вы хотите, напрямую используя html-тег, как показано ниже.

Для див

browser.div(id: "divid")
browser.div(id: /divid/)

Для пролета

browser.span(id: "spanid")
browser.span(id: /spanid/)

Для тега p

browser.p(id: "ptag")
browser.p(id: /ptag/)

Для кнопки

browser.button(id: "btnid")
browser.button(id: /btnid/)

Использование имени класса

Вы можете найти элемент, используя его имя класса. Это можно сделать как показано ниже —

Для див

browser.div(class: "divclassname")
browser.div(class: /divclassname/)

Для пролета

browser.span(class: "spanclassname”)
browser.span(class: /spanclassname/)

Для тега p

browser.p(class: "pclassname")
browser.p(class: /pclassname/)

Для кнопки

browser.button(class: "btnclassname")
browser.button(class: /btnclassname/)

Для текстового поля

browser.text_field(class: 'txtclassname')
browser.text_field(class: /txtclassname/)

Вы также можете пройти несколько классов, как показано ниже —

Для див

browser.div(class: ["class1", "class2"])

Используя текст

Это еще один способ найти элементы, используя элементы с текстом. Например —

browser.button(text: "button text")
browser.button(text: /button text/)

Использование метки

Вы можете использовать метку элемента, чтобы найти его, как показано ниже —

browser.text_field(label: "text here"))
browser.text_field(label: /text here/))

Использование атрибутов данных

В случае если у вас есть атрибуты данных для ваших HTML-тегов, вы можете найти элементы, используя их, как показано ниже —

Например, вы можете найти тег, как показано ниже —

<div data-type = "test1"></div>

Вы можете найти div следующим образом:

browser.div(data-type: 'test1'))
browser.div(data-type: /test1/))

Использование пользовательских атрибутов

Вы также можете найти элементы с помощью пользовательских атрибутов, как показано ниже —

Пример HTML-элемента

<div itemprop = ”content”>
   ….
</div>

Вы можете найти div следующим образом:

browser.div(itemprop: ‘content'))
browser.div(itemprop: /content/))

Использование видимого атрибута

Элемент, использующий атрибут visible, может быть расположен, как показано ниже —

browser.div(visible: true)
browser.div(visible: false)

Watir — Работа с фреймами

Watir предлагает простой в использовании синтаксис для работы с фреймами.

Синтаксис

browser.iframe(id: 'myiframe') 
// will get the reference of the iframe where we want to input details.

Чтобы понять, как работать с iframe и найти элементы внутри iframe, в этой главе мы будем работать над примером.

пример

main.html

<html>
   <head>
      <title>Testing using Watir</title>
   </head>
   <body>
      <iframe src = "test1.html" id = "myiframe" width = "500" height = "100"></iframe>
   </body>
</html>

test1.html

<html>
   <head>
      <title>Testing UI using Watir</title>
   </head>
   
   <body>
      <script type = "text/javascript">
         function wsentered() {
            console.log("inside wsentered");
            var firstname = document.getElementById("firstname");
            
            if (firstname.value != "") {
               document.getElementById("displayfirstname").innerHTML = 
                  "The name entered is : " + firstname.value;
               
               document.getElementById("displayfirstname").style.display = "";
            }
         }
      </script>
      
      <div id = "divfirstname">
         Enter First Name : 
         <input type = "text" id = "firstname" name = "firstname" onchange = "wsentered()" />
      </div>
      <br/>
      <br/>
         <div style = "display:none;" id = "displayfirstname"></div>
   </body>
</html>

Выход

Iframe

В приведенном выше примере форма ввода определяется внутри iframe. Код Watir, который поможет нам найти его и проверить форму, приведен ниже —

Код Watir

require 'watir'
b = Watir::Browser.new :chrome
b.goto('http://localhost/uitesting/main.html')
t = b.iframe(id: 'myiframe').text_field
t.set 'Riya Kapoor'
b.screenshot.save 'iframetestbefore.png'
t.fire_event('onchange')
b.screenshot.save 'iframetestafter.png'

Код Watir, чтобы найти iframe в приведенном здесь URL —

t = b.iframe(id: 'myiframe').text_field

Мы использовали имя тега iframe и идентификатор iframe, как показано выше.

Скриншоты приведенного выше кода показаны ниже —

iframetestbefore.png

Используя ID

iframetestafter.png

Использование ID элемента

Watir — Автоматическое ожидание

В этой главе давайте разберемся с подробностями ожидания. Чтобы понять автоматические ожидания, мы создали простую тестовую страницу. Когда пользователь вводит текст в текстовое поле, происходит событие обмена, и через 3 секунды кнопка активируется.

У Watir есть вызов API wait_unit, который ожидает определенного события или свойства. Мы протестируем то же самое для тестовой страницы, как указано ниже —

Синтаксис

browser.button(id: 'btnsubmit').wait_until(&:enabled?)
//here the wait is on the button with id : btnsubmit to be enabled.

testwait.html

<html>
   <head>
      <title>Testing UI using Watir</title>
   </head>
   
   <body>
      <script type = "text/javascript">
         function wsentered() {
            setTimeout(function() {
            document.getElementById("btnsubmit").disabled = false; }, 3000);
         }
         function wsformsubmitted() {
            document.getElementById("showmessage").style.display = "";
         }
      </script>
      
      <div id = "divfirstname">
         Enter First Name : 
         <input type = "text" id = "firstname" name = "firstname" onchange = "wsentered()" />
      </div>
      <br/>
      <br/>
      <button id = "btnsubmit" disabled onclick = "wsformsubmitted();">Submit</button>
      <br/<
      <br/<
      
      <div id = "showmessage" style = "display:none;color:green;font-size:25px;">l;
         Button is clicked
      </div>
   </body>
</html>

Выход

Автоматическое ожидание

Когда вы вводите текст в текстовое поле, вам придется подождать 3 секунды, чтобы кнопка была включена.

Автоматическое ожидание

При нажатии кнопки «Отправить» отображается следующий текст:

Кнопка «Отправить»

Теперь, поскольку мы добавили задержку для включения кнопки, для автоматизации трудно обрабатывать такие случаи. Всякий раз, когда у нас есть некоторая задержка или нам нужно ждать какого-либо события или свойства элемента, который мы хотим найти, мы можем использовать wait_until, как показано ниже —

Код Watir с использованием wait_until

require 'watir'
b = Watir::Browser.new :chrome
b.goto('http://localhost/uitesting/testwait.html')
t = b.text_field(name: 'firstname')
t.exists?
t.set 'Riya Kapoor'
b.screenshot.save 'waittestbefore.png'
t.value
t.fire_event('onchange')
btn = b.button(id: 'btnsubmit').wait_until(&:enabled?)
btn.fire_event('onclick');
b.screenshot.save 'waittestafter.png'

Далее используйте следующую команду

btn = b.button(id: 'btnsubmit').wait_until(&:enabled?)

Watir будет ждать, пока кнопка не будет включена, а затем перейти к событию click, которое будет запущено. Снимки экрана показаны ниже —

Waittestbefore.png

Waittestbefore

waittestafter.png

waittestafter

Watir — безголовый тест

В этой главе мы узнаем, как использовать опцию безголового веб-драйвера Watir для проверки URL-адреса страницы.

Синтаксис

Browser = Watir::Browser.new :chrome, headless: true

Тестовая страница, которую мы собираемся протестировать, показана здесь —

<html>
   <head>
      <title>Testing UI using Watir</title>
   </head>
   
   <body>
      <script type = "text/javascript">
         function wsentered() {
            console.log("inside wsentered");
            var firstname = document.getElementById("firstname");
            
            if (firstname.value != "") {
               document.getElementById("displayfirstname").innerHTML = 
                  "The name entered is : " + firstname.value;
               
               document.getElementById("displayfirstname").style.display = "";
            }
         }
      </script>
      
      <div id = "divfirstname">
         Enter First Name : <input type = "text" id = "firstname" name = "firstname" onchange = "wsentered()" />
      </div>
      <br/>
      <br/>
      <div style = "display:none;" id = "displayfirstname"></div>
   </body>
</html>

Выход

Использование ID элемента

Код Watir

require 'watir'
b = Watir::Browser.new :chrome, headless: true
b.goto('http://localhost/uitesting/textbox.html')
t = b.text_field(name: 'firstname')
t.exists?
t.set 'Riya Kapoor'
t.value
t.fire_event('onchange')
b.screenshot.save 'headless.png'

Мы добавили опцию без заголовка : true для браузера Watir Chrome. Когда вы запустите программу Ruby, она не откроет браузер, все будет выполнено в командной строке —

DevTools listening on ws://127.0.0.1:53973/devtools/browser/b4127866-afb8-4c74-b967-5bacb3354b19
[0505/144843.905:INFO:CONSOLE(8)] "inside wsentered", source: http://localhost/uitesting/textbox.html (8)

Мы добавили сообщение console.log и то же самое, напечатанное в командной строке.

Скриншот headless.png показан ниже —

Использование ID элемента

В Firefox

Код watir для Firefox показан здесь —

require 'watir'
b = Watir::Browser.new :firefox, headless: true
b.goto('http://localhost/uitesting/textbox.html')
t = b.text_field(name: 'firstname')
t.exists?
t.set 'Riya Kapoor'
t.value
t.fire_event('onchange')
b.screenshot.save 'headlessfirefox.png'

Скриншот для headlessfirefox.png показан здесь —

Использование ID элемента

Watir — Мобильное Тестирование

Для мобильного тестирования мы будем использовать настольный браузер, который будет выполнять роль браузера устройства для целей тестирования. Давайте разберемся с его процедурой в этой главе.

Чтобы протестировать ваше приложение в мобильных браузерах, нам нужно установить webdriver-user-agent.

Установка webdriver-user-agent

gem install webdriver-user-agent

Установить Webdriver

Теперь мы собираемся использовать пользовательский агент Webdriver, как показано в примере ниже:

пример

require 'watir'
require 'webdriver-user-agent'
driver = Webdriver::UserAgent.driver(browser: :chrome, agent: :iphone, orientation: :landscape)
browser = Watir::Browser.new driver
browser.goto 'https://facebook.com'
puts "#{browser.url}"
puts browser.url == 'https://m.facebook.com/'

Мы дали facebook.com URL. Когда вы выполняете его, он открывается в мобильном режиме на основе идентификатора пользователя, как показано ниже —

facebook

Давайте теперь попробуем в портретном режиме. Используйте следующий код для этой цели —

require 'watir'
require 'webdriver-user-agent'
driver = Webdriver::UserAgent.driver(browser: :chrome, agent: :iphone, orientation: :portrait)
browser = Watir::Browser.new driver
browser.goto 'https://facebook.com'
puts "#{browser.url}"
puts browser.url == 'https://m.facebook.com/'

Вывод в портретном режиме, как показано ниже —

портретный режим

Watir — Снимки экрана

Возможность делать снимки экрана — одна из интересных функций, доступных в Watir. Во время автоматизации тестирования вы можете делать скриншоты и сохранять экраны. В случае, если возникает какая-либо ошибка, то же самое может быть задокументировано с помощью скриншота.

Простой пример вместе с тестовой страницей, где мы сделали снимок экрана, обсуждается ниже —

Синтаксис

browser.screenshot.save 'nameofimage.png'

Тестовая страница

<html>
   <head>
      <title>Testing UI using Watir</title>
   </head>
   
   <body>
      <script type = "text/javascript">
         function wsentered() {
            console.log("inside wsentered");
            var firstname = document.getElementById("firstname");
            
            if (firstname.value != "") {
               document.getElementById("displayfirstname").innerHTML = 
                  "The name entered is : " + firstname.value;
               
               document.getElementById("displayfirstname").style.display = "";
            }
         }
      </script>
      <div id = "divfirstname">
         Enter First Name :
         <input type = "text" id = "firstname" name = "firstname" onchange = "wsentered()" />
      </div>
      <br/>
      <br/>
      <div style = "display:none;" id = "displayfirstname"></div>
   </body>
</html>

пример

require 'watir'
b = Watir::Browser.new :chrome
b.goto('http://localhost/uitesting/textbox.html')
t = b.text_field(id: 'firstname') // using the id of the textbox to locate the textbox
t.exists?
t.set 'Riya Kapoor'
b.screenshot.save 'textboxbefore.png'
t.value
t.fire_event('onchange')
b.screenshot.save 'textboxafter.png'

Скриншоты, которые мы сделали с помощью Watir, показаны здесь —

textboxbefore.png

Используя ID

textboxafter.png

Использование ID элемента

Watir — объекты страницы

Page Object в Watir помогает нам повторно использовать код в виде классов. Используя функцию объекта страницы, мы можем автоматизировать наше приложение без дублирования какого-либо кода, а также сделать код управляемым.

При тестировании мы можем создать объект страницы для каждой страницы, которую мы собираемся протестировать. Затем мы собираемся получить доступ к методам и свойствам, используя объект страницы.

Причины использования объекта страницы —

  • В случае внесения каких-либо изменений в страницу при внесении изменений, переписывание кода не требуется.

  • Чтобы избежать избыточности кода.

В случае внесения каких-либо изменений в страницу при внесении изменений, переписывание кода не требуется.

Чтобы избежать избыточности кода.

Мы будем использовать RSpec для использования объекта страницы в Watir. Например, если вы не знакомы с RSpec, вот вам полный курс обучения для RSpec .

Страница, на которой мы собираемся выполнить тест, приведена здесь —

textbox.html

<html>
   <head>
      <title>Testing UI using Watir</title>
   </head>
   
   <body>
      <script type = "text/javascript">
         function wsentered() {
            console.log("inside wsentered");
            var firstname = document.getElementById("firstname");
            
            if (firstname.value != "") {
               document.getElementById("displayfirstname").innerHTML = 
                  "The name entered is : " + firstname.value;
               
               document.getElementById("displayfirstname").style.display = "";
            }
         }
      </script>
      
      <div id = "divfirstname">
         Enter First Name : 
         <input type = "text" id = "firstname" name = "firstname" onchange = "wsentered()" />
      </div>
      <br/>
      <br/>
      <div style = "display:none;" id = "displayfirstname"></div>
   </body>
</html>

Выход

Работа с текстовыми полями Выполнить вывод

Теперь мы создадим объект страницы для вышеуказанной страницы, как показано ниже —

pageobjecttest.rb

class InitializeBrowser
   def initialize(browser)
      @browser = browser
   end
end

class TestPage lt; InitializeBrowser
   def textbox
      @textbox = TestTextbox.new(@browser)
   end
   def close
      @browser.screenshot.save 'usingpageobject.png'
      @browser.close
   end
end # TestPage

class TestTextbox < InitializeBrowser
   URL = "http://localhost/uitesting/textbox.html"

   def open
      @browser.goto URL
      self
   end
   def enterdata_as(name)
      name_field.set name
      name_field.fire_event('onchange')
   end

private
   def name_field
      @browser.text_field(:id > "firstname")
   end
end # TestTextbox

Определены три класса — InitializeBrowser, TestPage и TestTextbox —

  • InitializeBrowser — это инициализирует открытый браузер и делит объект браузера с классами TestPage и TestTextbox.

  • TestPage — этот класс будет иметь ссылку на объект TestTextbox и содержит метод для захвата скриншота и закрытия браузера.

  • TestTextbox — этот класс будет иметь методы для открытия URL- адреса страницы, ссылки на текстовое поле, установки данных и запуска события onchange.

InitializeBrowser — это инициализирует открытый браузер и делит объект браузера с классами TestPage и TestTextbox.

TestPage — этот класс будет иметь ссылку на объект TestTextbox и содержит метод для захвата скриншота и закрытия браузера.

TestTextbox — этот класс будет иметь методы для открытия URL- адреса страницы, ссылки на текстовое поле, установки данных и запуска события onchange.

Как только вы выполните код, показанный выше, вы можете увидеть вывод, как показано ниже —

Использование ID элемента

Watir — производительность страницы

Функция производительности Watir Page позволяет отслеживать метрики времени отклика, и она отлично работает в Chrome, Firefox, IE9 и выше. Браузер Safari не имеет поддержки на данный момент.

Давайте подробнее рассмотрим, как использовать эту функцию. Чтобы использовать его, нам нужно установить watir-performance с помощью gem, как показано ниже —

команда

gem install watir-performance

Watir Performance

Мы закончили с установкой watir-performance. Поддерживаемые показатели:

  • резюме
  • навигация
  • объем памяти
  • тайминг

Рабочий пример использования watir-performance обсуждается здесь. Здесь мы проверим время отклика сайта — www.tutorialspoint.com, как показано ниже —

require 'watir'
require 'watir-performance'
10.times do
   b = Watir::Browser.new :chrome
   b.goto 'https://www.tutorialspoint.com'
   load_secs = b.performance.summary[:response_time] / 1000
   puts "Load Time: #{load_secs} seconds."
   b.close
end

выход

Load Time: 7 seconds.
Load Time: 7 seconds.
Load Time: 5 seconds.
Load Time: 5 seconds.
Load Time: 6 seconds.
Load Time: 5 seconds.
Load Time: 5 seconds.
Load Time: 13 seconds.
Load Time: 12 seconds.
Load Time: 5 seconds.

Использование performance.timing

require 'watir'
require 'watir-performance'

b = Watir::Browser.new :chrome
b.goto 'https://www.tutorialspoint.com'
load_secs = b.performance.timing[:response_end] - b.performance.timing[:response_start]
puts "Time taken to respond is #{load_secs} seconds."
b.close

выход

Time taken to respond is 41 seconds.

Использование performance.navigation

require 'watir'
require 'watir-performance'

b = Watir::Browser.new :chrome
b.goto 'https://www.tutorialspoint.com'
perf_nav = b.performance.navigation
puts "#{perf_nav}"
b.close

выход

{:type_back_forward=>2, :type_navigate=>0, :type_reload=>1, 
:type_reserved=>255, :redirect_count=>0, :to_json=>{}, :type=>0}

Использование performance.memory

require 'watir'
require 'watir-performance'

b = Watir::Browser.new :chrome
b.goto 'https://www.tutorialspoint.com'
memory_used = b.performance.memory
puts "#{memory_used}"
b.close

выход

{:js_heap_size_limit=>2, :type_navigate=>0, :type_reload=>1, :ty2136997888, 
:total_js_heap_size=>2, :type_navigate=>0, :type_reload=>1, :ty12990756, 
:used_js_heap_size=>2, :type_navigate=>0, :type_reload=>1, :ty7127092}

Watir — Печенье

В этой главе мы узнаем, как работать с файлами cookie с помощью Watir.

Простой пример получения файлов cookie для указанного URL-адреса обсуждается здесь.

Синтаксис для получения куки

browser.cookies.to_a

пример

require 'watir'

b = Watir::Browser.new :chrome
b.goto 'https://www.tutorialspoint.com'
puts b.cookies.to_a

Выход

{:name=>"_gat_gtag_UA_232293_6", :value=>"1", :path=>"/", 
:domain=>".tutorialspoint.com", :expires=>2019-05-03 08:33:58 +0000, 
:secure=>false}

{:name=>"_gid", :value=> "GA1.2.282573155.1556872379", :path=>"/", 
:domain=>".tutorialspoint.com", :expires=>2019-05-04 08:32:57 +0000, 
:secure=>false}

{:name=>"_ga", :value=>"GA1.2.2087825339.1556872379", :path=>"/", 
:domain=>".tutorialspoint.com", :expires=>
2021-05-02 08:32:57 +0000, :secure=>false}

Теперь давайте добавим куки, как показано ниже —

Синтаксис для добавления куки

browser.cookies.add 'cookiename', 'cookievalue', path: '/', expires: 
(Time.now + 10000), secure: true

пример

require 'watir'
b = Watir::Browser.new :chrome
b.goto 'https://www.tutorialspoint.com'
puts b.cookies.to_a
b.cookies.add 'cookie1', 'testing_cookie', path: '/', expires: 
(Time.now + 10000), secure: true
puts b.cookies.to_a

Вывод перед добавлением куки

{:name=>"_gat_gtag_UA_232293_6", :value=>"1", :path=>"/", 
:domain=>".tutorialspoint.com", :expires=>2019-05-03 08:44:23 +0000, 
:secure=>false}

{:name=>"_gid", :value=>"GA1.2.1541488984.1556873004", 
:path=>"/", :domain=>".tutorialspoint.com", 
:expires=>2019-05-04 08:43:24 +0000, :secure=>false}

{:name=>"_ga", :value=>"GA1.2.1236163943.1556873004", 
:path=>"/", :domain=>".tutorialspoint.com", 
:expires=>2021-05-02 08:43:24 +0000, :secure=>false}

Выходные данные После добавления куки

{:name=>"_gat_gtag_UA_232293_6", :value=>"1", :path=>"/", 
:domain=>".tutorialspoint.com", :expires=>2019-05-03 08:44:23 +0000, 
:secure=>false}

{:name=>"_gid", :value=>"GA1.2.1541488984.1556873004", 
:path=>"/", :domain=>".tutorialspoint.com", 
:expires=>2019-05-04 08:43:24 +0000, :secure=>false}

{:name=>"_ga", :value=>"GA1.2.1236163943.1556873004", 
:path=>"/", :domain=>".tutorialspoint.com", 
:expires=>2021-05-02 08:43:24 +0000, :secure=>false}

{:name=>"cookie1", :value=>"testing_cookie", :path=>"/", 
:domain=>"www.tutorialspoint.com", :expires=>2039-04-28 08:43:35 +0000, 
:secure=>true}

Обратите внимание, что последний — это тот, который мы добавили с помощью watir.

Очистить печенье

Синтаксис

browser.cookies.clear

пример

require 'watir'

b = Watir::Browser.new :chrome
b.goto 'https://www.tutorialspoint.com'
puts b.cookies.to_a
b.cookies.clear
puts b.cookies.to_a

Выход

{:name=>"_gat_gtag_UA_232293_6", :value=>"1", :path=>"/", 
:domain=>".tutorialspoint.com", :expires=>2019-05-03 08:48:29 +0000, 
:secure=>false}

{:name=>"_gid", :value=>"GA1.2.1264249563.1556873251", 
:path=>"/", :domain=>".tutorialspoint.com", 
:expires=>2019-05-04 08:47:30 +0000, :secure=>false}

{:name=>"_ga", :value=>"GA1.2.1001488637.1556873251", 
:path=>"/", :domain=>".tutorialspoint.com", 
:expires=>2021-05-02 08:47:30 +0000, :secure=>false

Empty response ie a blank line will get printed after cookie.clear is called.

Удалить определенный файл cookie

Синтаксис

browser.cookies.delete 'nameofthecookie'

пример

require 'watir'
b = Watir::Browser.new :chrome
b.goto 'https://www.tutorialspoint.com'
puts b.cookies.to_a
puts b.cookies.delete "_ga"
puts b.cookies.to_a

Выход

All cookies:
{:name=>"_gat_gtag_UA_232293_6", :value=>"1", :path=>"/", 
:domain=>".tutorialspoint.com", :expires=>2019-05-03 08:52:38 +0000, 
:secure=>false}

{:name=>"_gid", :value=>"GA1.2.1385195240.1556873499", 
:path=>"/", :domain=>".tutorialspoint.com", 
:expires=>2019-05-04 08:51:37 +0000, :secure=>false}

{:name=>"_ga", :value=>"GA1.2.1383421835.1556873499", 
:path=>"/", :domain=>".tutorialspoint.com", 
:expires=>2021-05-02 08:51:37 +0000, :secure=>false}

After delete cookie with name _ga
{:name=>"_gat_gtag_UA_232293_6", 
:value=>"1", :path=>"/", :domain=>".tutorialspoint.com", 
:expires=>2019-05-03 08:52:38 +0000, :secure=>false}

{:name=>"_gid", :value=>"GA1.2.1385195240.1556873499", 
:path=>"/", :domain=>".tutorialspoint.com", 
:expires=>2019-05-04 08:51:37 +0000, :secure=>false}

Watir — Прокси

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

Синтаксис

proxy = {
   http: '127.0.0.1:8080',
   ssl: '127.0.0.1:8080'
}
b = Watir::Browser.new :chrome, proxy: proxy

Пример использования прокси с браузером Chrome показан ниже —

пример

require "watir"
proxy = {
   http: '127.0.0.1:8080',
   ssl: '127.0.0.1:8080'
}
b = Watir::Browser.new :chrome, proxy: proxy
b.goto 'google.com'
b.screenshot.save 'proxy.png'

Мы использовали прокси-объект, как показано ниже —

proxy = {
   http: '127.0.0.1:8080',
   ssl: '127.0.0.1:8080'
}

Данные прокси-адреса должны использоваться как для http, так и для ssl. Мы можем использовать прокси с браузером Chrome, как показано ниже —

b = Watir::Browser.new :chrome, proxy: proxy

Выходной proxy.png показан ниже —

Выходной прокси

Пример использования прокси с браузером Firefox обсуждается ниже —

пример

require "watir"
proxy = {
   http: '127.0.0.1:8080',
   ssl: '127.0.0.1:8080'
}
b = Watir::Browser.new :firefox, proxy: proxy
b.goto 'google.com'
b.screenshot.save 'proxyfirefox.png'

Вы можете добавить детали прокси, как показано ниже —

proxy = {
   http: '127.0.0.1:8080',
   ssl: '127.0.0.1:8080'
}
b = Watir::Browser.new :firefox, proxy: proxy

Выходной файл proxyfirefox.png показан здесь —

Выходной прокси

Watir — Оповещения

В этой главе мы поймем, как обрабатывать оповещения с помощью Watir.

Синтаксис

browser.alert.exists?
browser.alert.ok
browser.alert.close

тестовая страница

<html>
   <head>
      <title>Testing Alerts Using Watir</title>
   </head>
   
   <body>
      <script type = "text/javascript">
         function wsformsubmitted() {
            alert("Button is Clicked !");
         }
      </script>
      <button id = "btnsubmit" onclick = "wsformsubmitted();">Submit</button>
   </body>
</html>

Код Watir

require 'watir'
b = Watir::Browser.new :chrome
b.goto('http://localhost/uitesting/testalert.html')
b.button(id: 'btnsubmit').click
b.alert.ok
b.screenshot.save 'alerttest.png'

Вывод alerttest.png показан здесь —

Тест оповещения

Watir — Загрузки

У нас есть кнопки или ссылки в пользовательском интерфейсе или на нашем веб-сайте, который загружает PDF или документ. Мы можем проверить это для использования с Watir, задав некоторые предпочтения для браузера.

Синтаксис для скачивания —

prefs = {
   'download' => {
      'default_directory' => "C:/download",
      'prompt_for_download' => false,
   }
}
b = Watir::Browser.new :chrome, options: {prefs: prefs}

В prefs есть загрузка, в которой нам нужно указать путь, по которому мы хотим, чтобы файл был сохранен после загрузки, и то же самое должно быть предоставлено браузерам с использованием параметров, как показано в синтаксисе выше.

Рабочий пример показан здесь. Здесь мы создали тестовую страницу с кнопкой, которая при нажатии загружает файл с именем file.txt, как показано ниже —

<html>
   <head>
      <title>Testing UI using Watir</title>
   </head>
   
   <body>
      <br/>
      <br/>
      <button id = "btnsubmit">
         <a href = "file.txt" download>Click to Download!</a>
      </button>
      <br/>
   </body>
</html>

file.txt

This is for testing watir download

Выход

Тестирование Watir

Когда вы нажимаете кнопку загрузки, файл загружается.

Теперь давайте проверим то же самое с помощью Watir —

require 'watir'
prefs = {
   'download' => {
      'default_directory' => "C:/download",
      'prompt_for_download' => false,
   }
}
b = Watir::Browser.new :chrome, options: {prefs: prefs}
b.goto('http://localhost/uitesting/filedownload.html')
b.button(id: 'btnsubmit').click
b.screenshot.save 'testdownload.png'

Путь, который мы указали для хранения загруженного файла: «C: / download». Когда мы выполним приведенный выше код, мы получим файл для загрузки по пути загрузки, указанному ниже:

путь загрузки

Результат testdownload.png такой, как показано здесь —

testdownload

Watir — Браузер Windows

Вы столкнетесь со случаями, когда нам нужно использовать всплывающее окно или открытие нового окна браузера. В этой главе мы обсудим, как тестировать такие случаи с помощью Watir.

Синтаксис

browser.window

Рабочий пример, который мы собираемся протестировать, приведен здесь —

<html>
   <head>
      <title>Testing UI using Watir</title>
   </head>
   
   <body>
      <script type = "text/javascript">
         function wsclick() {
            var myWindow = window.open(
               "https://www.google.com/", "mywindow", "width = 1000,height = 500");
         }
      </script>
      
      <form name = "myform" method = "POST">
         <div>
            <br>
            <input type = "button" id = "btnsubmit" name = "btnsubmit" value = "submit" onclick = "wsclick()"/>
            <br>
         </div>
      </form>
      <br/>
   </body>
</html>

Выход

Браузер Windows

При нажатии кнопки «Открыть окно» открывается всплывающее окно. Здесь мы указали URL-адрес www.google.com . Теперь давайте проверим то же самое с помощью Watir /

пример

require 'watir'
b = Watir::Browser.new :chrome
b.goto('http://localhost/uitesting/windowpopup.html')
b.button(id: 'btnsubmit').click
b.window(title: 'Google').use do
   b.screenshot.save 'popupwindow.png'
   t = b.text_field(class: 'gLFyf')
   t.set 'Watir'
   b.screenshot.save 'popupwindowbefore.png'
   b.button(name: 'btnK').click
   b.screenshot.save 'popupwindowafter.png'
end

Снимки экрана, которые мы сделали, приведены ниже —