Выполнение JavaScript кода

Parent Previous Next

Выполнение JavaScript кода


Для выполнения JavaScript кода в HatFramework добавлен специальный метод ExecuteJavaScriptAsync.


Сначала нужно объявить текстовую переменную и в ней описать скрипт который вы хотите выполнить.


string script = @"(function(){ 

var element = document.getElementsByTagName('h2')[0]; 

return element.outerText; 

}());";


Теперь с помощью метода ExecuteJavaScriptAsync выполним выше описанный скрипт и получим результат.


string actual = await tester.ExecuteJavaScriptAsync(script);


В данном примере вы получите текст из элемента H2 со страницы на которой этот скрипт был вызван.



Полный пример описан в скрипте ниже:


Файл: ExampleTest4.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Windows.Forms;

using System.Threading;

using System.Threading.Tasks;

using System.IO;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Text.RegularExpressions;

using System.Net;

using System.Net.Http;

using System.Net.Http.Headers;

using System.Reflection;

using Newtonsoft.Json;

using HatFramework;


namespace Hat

{

    public class ExampleTest4

    {

        Tester tester; // Главная переменная для работы автотеста


        // Главная входная функция (с этой функции начинается работа автотеста)

        public async void Main(Form browserWindow)

        {

            tester = new Tester(browserWindow); // Инициализация главной переменной


            await setUp(); // Функция начала работы с автотестом

            await test(); // Функция выполнения действий теста

            await tearDown(); // Функция завершения работы с автотестом

        }


        public async Task setUp()

        {

            await tester.BrowserFullScreenAsync(); // Устанавливает разрешение браузер на весь экран

        }


        public async Task test()

        {

            await tester.TestBeginAsync(); // Начало выполнения действий

            await tester.GoToUrlAsync("https://somovstudio.github.io/test.html", 5); // Загрузка страницы по указанному адресу

            

            // Объявление переменной с описание скрипта на JavaScript

            string script = @"(function(){ 

                   var element = document.getElementsByTagName('h2')[0]; 

                   return element.outerText; 

                   }());";


            // Выполнение скрипта

            string actual = await tester.ExecuteJavaScriptAsync(script);


            // Проверка результата

            string expected = "Авторизация";

            await tester.AssertEqualsAsync(expected, actual); // Ожидаемые и актуальные данные должны совпадать


            await tester.TestEndAsync(); // Завершение выполнения действий

        }


        public async Task tearDown()

        {

            await tester.BrowserCloseAsync(); // Закрывает браузер

        }

    }

}


Примеры JavaScript и JQuery скриптов для метода ExecuteJavaScriptAsync :


- фокус на элемент input и введение данных


var element = document.evaluate("//input[@id='phone']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

element.focus();

element.value = '9999999999';

element.setAttribute("value", "9999999999");


- фокус на элемент input и вставка данных


document.getElementById("phone").focus();

document.execCommand("insertHTML", false, "9999999999");


- введение данных в input и вызов событий


var element = document.evaluate("//input[@id='phone']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

element.value = '9999999999';

element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true }));

element.dispatchEvent(new KeyboardEvent('keypress', { bubbles: true }));

element.dispatchEvent(new KeyboardEvent('keyup', { bubbles: true }));

element.dispatchEvent(new Event('input', { bubbles: true }));

element.dispatchEvent(new Event('change', { bubbles: true }));


- выделить значение в input


var element = document.evaluate("//input[@id='phone']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

element.select();


- нажатие мышкой


var clickEvent = new MouseEvent("click", { "view": window, "bubbles": true, "cancelable": false });

var element = document.evaluate("//input[@id='phone']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

element.dispatchEvent(clickEvent);


var theEvent = document.createEvent("MouseEvent");

theEvent.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);

element.dispatchEvent(theEvent);


- использование JQuery для нажатия кнопки (если библиотека подключена на тестируемой странице)


string script = @"$(function() { 

console.log('autotest JQUERY');  

$('#btn-send > div.btn > a').click(); 

});";




Created with the Personal Edition of HelpNDoc: Easy CHM and documentation editor