1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/if1_admin-PatatiumWebUi

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

PatatiumWebUi

Введение

Это фреймворк для автоматизации тестирования WebUI, созданный основателем веб-сообщества Webdriver по имени «Картофель» (псевдоним). Фреймворк написан на языке Java и основан на открытом исходном коде Selenium WebDriver. Он объединяет TestNG, Selenium, WebDriver, JXL, Jodd-HTTP и другие инструменты.

Фреймворк основан на архитектуре объектной модели страницы (POM) и реализует ключевые технологии:

  • Ключевое слово-управляемое тестирование;
  • Управляемое данными тестирование;
  • Разделение данных и кода: информация об элементах хранится в файле библиотеки объектов, а данные тестовых случаев — в Excel. Это позволяет изменять расположение элементов без изменения сценария, просто обновляя информацию об элементе.

Также фреймворк предоставляет функции автоматического создания снимков экрана при неудачных тестах и генерации HTML-отчётов о тестировании, а также автоматической отправки отчётов по электронной почте.

На данный момент фреймворк не является полностью завершённым и требует дополнительной разработки. Для его изучения необходимо иметь базовые знания HTML и Java. В будущем планируется рассмотреть возможность автоматического кодирования.

Конфигурация среды

  1. JDK 1.8;
  2. IDEA/Eclipse;
  3. Maven.

Замечания

При разработке проекта необходимо установить кодировку UTF-8, иначе могут возникнуть проблемы с отображением китайских символов.

API-документ

Для просмотра API-документации нажмите на ссылку.

Реализованные функции

  1. Управление информацией об объектах XML;
  2. Единый стиль работы с API, action.operation(определённый элемент страницы);
  3. Управляемое данными тестирование;
  4. Ключевое слово-управляемое тестирование;
  5. Автоматическое создание снимков экрана при неудачном тесте и их отображение в отчёте;
  6. Автоматическая генерация HTML-отчёта и автоматическая отправка отчёта по электронной почте;
  7. Возможность одновременного выполнения тестовых сценариев для нескольких браузеров для проверки совместимости.

Демонстрация

1. Создание файла библиотеки объектов (имя файла: UILibrary.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!--整个对象库文件的根目录,管理整个项目的对象-->
<map>
    <!--管理一个页面的元素(webelement:input,select,textare,a,li等标签),一个page包含多个locator对象
Pagename:page对象名字,格式:org.webdriver.patatiumwebui.PageObject.xxxPage;最后面那位才是真正的页面名字,前面的是java对象库路径;另外注意,页面名字是头个单词大写;例如主页:名字定义为 org.webdriver.patatiumwebui.HomePage
Value:页面对象的URL,可不填。
Desc:页面对象中文描述-->
    <page pagename="org.webdriver.patatiumwebui.pageObject.LoginPage" value="" desc="京东登录页面">
        <!--管理一个页面的元素(webelement:input,select,textare,a,li等标签),一个page包含多个locator对象
Type:定位方式,包含id,name,class,linktext,xpath,css等,定位元素的时候灵活使用,一般可以统一用xpath
代替id,name,class,linktext的定位方式。
Timeout:元素加载时间,有些页面元素,可能要等待一段时间才能加载过来,为了查找元素的稳定性,需加等待时间。
Value:元素定位信息,如果是id,name,class,linktext直接把网页元素对应的这些属性值写上即可,如果是xpath定位方式,
需要填写正确的xpath语法格式。
Desc:元素的描述,元素的中文描述信息-->
        <locator type="xpath" timeout="3" value="//input[@id='loginname']"  desc="用户名">用户名输入框</locator>
        <locator type="id" timeout="3" value="nloginpwd"  desc="密码">密码输入框</locator>
        <locator type="id" timeout="3" value="loginsubmit"  desc="登录">登录按钮</locator>
    </page>
</map>

2. Пример общего действия (бизнес-операция)

package org.webdriver.patatiumwebui.action;

import org.webdriver.patatiumwebui.pageObject.LoginPage;
import org.webdriver.patatiumwebui.utils.ElementAction;
import org.webdriver.patatiumwebui.utils.TestBaseCase;

import java.io.IOException;

/**
 * Created by zhengshuheng on 2016/8/29 0029.
 */
public class LoginAction extends TestBaseCase{
    public LoginAction(String Url,String UserName,String PassWord) throws IOException
    {
        //此driver变量继承自TestBase变量
        LoginPage loginPage=new LoginPage();
        loginPage.open(Url);
        System.out.println(driver.getCurrentUrl());
        ElementAction action=new ElementAction();
        action.clear(loginPage.密码输入框());
        action.type(loginPage.用户名输入框(),UserName);
        action.clear(loginPage.密码输入框());
        action.type(loginPage.密码输入框(),PassWord);
        action.click(loginPage.登录按钮());
    }
}

Общий код действий находится в пакете src/main/java/org/webdriver/patatiumwebui/Action.

3. Пример управляемого данными тестирования

  @Test(description="登录成功测试")
    @Parameters({"BaseUrl"})//读取testng.xml参数
    public void login(String BaseUrl) throws IOException
    {
        //调用登录方法,需输入正确的用户名和密码
        LoginAction loginAction=new LoginAction(BaseUrl+"/new/login.aspx","11111","abc123");
        action.sleep(2);
        //设置检查点
        Assertion.VerityTextPresentPrecision("jd_1111","输入正确的用户名和密码,验证是否成功进入主页");
        //设置用例断言,判断用例是否失败
        Assertion.VerityError();
    }

Пример обычного тестового случая:

   //数据驱动案例--start
    @DataProvider(name="longinData")
    public Object[][] loginData()
    {
        //读取登录用例测试数据
        String filePath="src/main/resources/data/loginData.xls";
        //读取第一个sheet,第2行到第5行-第2到第4列之间的数据
        return ExcelReadUtil.case_data_excel(0, 1, 4, 1, 3,filePath);
    }
    @Test(description="登录失败用例",dataProvider = "longinData")
    public void loginFail (String userName,string password,string message) throws IOException, DocumentException {
        //代替testng参数化的方法
        String BaseUrl= XmlReadUtil.getTestngParametersValue("testng.xml","BaseUrl");
        //вызов метода входа
        LoginAction
``` **Текст:**

Тест входа в систему успешно пройден.  

*Файл testng.xml должен находиться в корневой папке проекта.*  

**6. Выполнение теста**  

IDE: в интегрированной среде разработки (IDE) используйте TestNG для запуска файла testng.xml.  
Maven: выполните команды mvn clean и mvn test.  
Jenkins:  
1. Проверьте код проекта.  
2. Укажите файл pom.xml.  
3. Выполните команды mvn clean и mvn test.

**7. Просмотр отчётов о тестировании и журналов**  
После завершения выполнения тестов автоматически отправляются электронные письма с отчётами и создаются файлы отчётов. В случае сбоя теста автоматически делаются снимки экрана, которые затем отображаются в отчёте. Также можно отобразить в отчётах информацию о стеке вызовов при сбое теста. Файлы отчётов создаются в каталоге test-out в корне проекта в виде файлов report.html. Отчёты выглядят следующим образом:

[Рисунок 1]  
[Рисунок 2]  
[Рисунок 3]  
[Рисунок 4]

Электронные письма с отчётом выглядят так:

[Рисунок 5]

XPath подробно:  

Можно использовать плагин Firebug или Firepath в браузере Firefox для проверки правильности XPath. Вот пример выражения XPath: //div[@id='abc']/form/div/input/span.  
// — выбирает узлы из текущего местоположения без учёта их конкретного положения. Например: //div[@name='abc'].  
/ — выбирает элементы от корневого узла. Например: /html/body/div[@id='myModalex'].  
@ — указывает на атрибут. Атрибуты могут быть объединены с помощью операторов and или or. Например: //label[@class='col-sm-2 control-label' and @for='userName'].  
Text() — находит элемент по его текстовому содержимому. Пример: //h2[text()='webdriver中文社区'].  
Contains() — выполняет поиск элементов, содержащих указанный текст. Пример: //input[contains(@id,'nt')].  
Пример гибкого использования:  
Найти элемент:

八佰伴 嘎嘎嘎

八佰伴
``` Анализ: у этого элемента нет уникальных идентификаторов, таких как id или name, и он имеет несколько уровней вложенности. Поэтому поиск элемента начинается с родительского элемента. Однако использование XPath для поиска элементов на нескольких уровнях может усложнить процесс. Есть ли способ упростить и оптимизировать выражение XPath? Ответ положительный. Можно использовать // для значительного упрощения и оптимизации выражения XPath. Варианты: • //div[@id='abc']/form/div/input/span • //*[@id='abc']/form/div/input/span[@class='cde'] • //span[@class='cde'][2] • //div[@id='abc']//span[@class='cde']. Этот метод является наиболее кратким и понятным, а также наиболее стабильным.

В целом, при использовании XPath для определения местоположения элементов следует отдавать предпочтение атрибутам id и name. Если эти атрибуты отсутствуют, можно использовать другие атрибуты, такие как class.

  1. При отсутствии уникальных атрибутов у текущего узла, следует искать родительские узлы, пока не будет найден уникальный атрибут.
  2. Если одного атрибута недостаточно для однозначного определения элемента, можно объединить несколько атрибутов с помощью оператора and. Это поможет сделать выражение XPath более стабильным и точным.

Firebug используется для поиска элементов. Например, чтобы найти поле ввода имени пользователя, можно использовать выражение XPath //*[@id='userName'], которое ищет все элементы с атрибутом id, равным 'userName', на текущей странице. * обозначает все элементы.

Лицензия: GPL V2.0

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

На основе Selenium WebDriver — автоматизированная среда тестирования. Развернуть Свернуть
GPL-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/if1_admin-PatatiumWebUi.git
git@api.gitlife.ru:oschina-mirror/if1_admin-PatatiumWebUi.git
oschina-mirror
if1_admin-PatatiumWebUi
if1_admin-PatatiumWebUi
master