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

OSCHINA-MIRROR/zhengshuheng-PatatiumWebUi

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

PatatiumWebUi

Введение

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

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

  • технология ключевых слов;
  • технология данных;
  • разделение данных и кода.

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

Во фреймворке реализованы функции проверки точек и сбоя тестовых случаев, автоматического создания снимков экрана при сбое, автоматического формирования 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-отчётов и автоматическая отправка отчётов по электронной почте в формате 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>

После создания файла библиотеки объектов запустите файл /src/main/java/org/webdriver/patatiumwebui/PageObjectConfig/PageObjectAutoCode.java для генерации кода библиотеки объектов.

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. Пример источника данных привода

Создайте файл loginData.xls в папке src/main/resources/data и заполните его следующим образом:

введите сюда описание изображения

4. Пример написания тестовых примеров

Обычный тестовый пример:

        @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 loginAction=new LoginAction(BaseUrl+"/new/login.aspx",userName,password);
        action.sleep(1);
        //设置检查点
        Assertion.VerityTextPresent(message,"验证是否出现预期的错误提示信息:"+message);
        //设置断言
        Assertion.VerityError();
    }

Это похоже на язык Java.

Примечание: в запросе есть код, который не удалось перевести из-за отсутствия контекста. Перевод текста с английского на русский язык:

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

IDE: в интегрированной среде разработки (IDE) используйте TestNG для запуска testng.xml. Maven: выполните команды mvn clean и mvn test. Jenkins:

  1. Проверьте код проекта.
  2. Укажите файл pom.xml.
  3. Выполните команды mvn clean и mvn test.

7. Просмотр отчётов о тестах и журналов

После выполнения тестов автоматически отправляется электронное письмо с отчётом и создаётся файл отчёта в каталоге test-out корневого каталога проекта. Отчёт выглядит следующим образом:

введите сюда описание изображения

Электронное письмо выглядит следующим образом:

введите сюда описание изображения

Журнал выглядит следующим образом:

введите сюда описание изображения

Xpath: подробное объяснение

Примечание: вы можете использовать плагин Firebug или Firepath в браузере Firefox для проверки правильности xpath.

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

<span class=”cde”>八佰伴</span>
<span class=”cde”>嘎嘎嘎</span>
<div id=”abc”>
   <form>
            <div>
                   <input>
                      <span class=”cde”>八佰伴</span>
                   </input>
            </div>
   </form>
<div>

Анализ: у этого элемента нет уникальных идентификаторов, имён и других атрибутов, а также нет уникальных элементов на более высоких уровнях. Можно ли оптимизировать и упростить xpath? Да, используя //, можно значительно упростить и оптимизировать выражение xpath. Вариант 1: //div[@id=’abc’]/form/div/input/span Вариант 2: //*[@id=’abc’]/form/div/input/span[@class=’cde’] Вариант 3: //span[@class=’cde’][2] Вариант 4: //div[@id=’abc’]//span[@class=’cde’]. Этот метод наиболее лаконичен, структура также наиболее ясна и стабильна.

Таким образом, при использовании xpath для поиска элементов следует отдавать предпочтение атрибутам id и name. Если эти атрибуты не позволяют однозначно определить элемент, следует искать на более высоком уровне, используя родительские, прародительские и другие узлы. Если одного атрибута недостаточно, можно объединить несколько атрибутов с помощью оператора and, чтобы однозначно определить элемент.

Использование Firebug:

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

Лицензия

GPL V2.0

Если вы считаете, что этот продукт полезен для вас, вы можете поддержать меня, чтобы я мог продолжать работу. Большое спасибо.

Изображение: http://git.oschina.net/uploads/images/2016/0829/144253_111773ec_482055.jpeg

Если вам нравится этот проект, присоединяйтесь к группе обмена WebDriver китайского сообщества в QQ: 471137382. Я буду рад получить ваши предложения и сообщения об ошибках. Или напишите мне на почту: 609958331@qq.com Теперь пожертвования через WeChat не могут быть связаны с именем жертвователя, поэтому я буду рад, если вы добавите меня в WeChat: zhengshuheng002.

Большое спасибо следующим друзьям за их помощь:

Имя Сумма Способ Описание
Месяц Бо 8,8 Платёж Ален, надеюсь, ты будешь писать больше статей об автоматизации тестирования в свободное время
Джефф 66,66 WeChat Поддержка! Отличный пример!
Боби 18,80 WeChat Продолжай, твоя структура неплоха
Джойс 10,24 WeChat Поддерживаю тебя

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

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

Введение

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

Обновления

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

Участники

все

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

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