Как протестировать веб-страницу с помощью селена через настольное приложение?

Мне нужно протестировать веб-страницу через настольное приложение, я пытаюсь использовать Selenium IDE, мне удалось создать тестовые примеры, но я не могу выполнить их на java.

Я искал что-то полезное, но я не могу найти никакой помощи вообще.

Спасибо


person Andre    schedule 25.10.2013    source источник
comment
Настольное приложение, вы говорите о браузере, таком как IE, Firefox или Chrome ???   -  person Anand S    schedule 25.10.2013
comment
IDE позволяет экспортировать его как код Java.   -  person Arran    schedule 25.10.2013


Ответы (3)


Фреймворк, который был создан именно для этой цели (он на Java), можно скачать здесь или вы можете посмотреть проект на github здесь.

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

В проекте под названием SampleFunctionalTest.java есть образец теста. Предполагая, что вы следуете ReadMe до T, у вас не должно возникнуть проблем с началом работы.

Вот как будет выглядеть тест в этой структуре.

@Config(url = "http://ddavison.github.io/tests/getting-started-with-selenium.htm", browser = Browser.FIREFOX) // You are able to specify a "base url" for your test, from which you will test. You may leave `browser` blank.
public class SampleFunctionalTest extends AutomationTest {

    /**
     * You are able to fire this test right up and see it in action.  Right click the test() method, and click "Run As... jUnit test".
     * 
     * The purpose of this is to show you how you can continue testing, just by taking the semi colon out, and continuing with your test.
     */
    @Test
    public void test() {

            // click / validateAttribute
        click(props.get("click"))
        .validateAttribute(props.get("click"), "class", "success") // validate that the class indeed added.

        // setText / validateText
        .setText(By.id("setTextField"), "woot!")
        .validateText(By.id("setTextField"), "woot!") // validates that it indeed set.

        // check / uncheck
        .check(By.id("checkbox"))
        .validateChecked(By.id("checkbox")) // validate that it checked

        .check(props.get("radio.2")) // remember that props come from <class name>.properties, and are always CSS selectors. (why use anything else, honestly.)
        .validateUnchecked(props.get("radio.1")) // since radio 1 was selected by default, check the second one, then validate that the first radio is no longer checked.

        // select from dropdowns.
        .selectOptionByText(By.xpath("//select[@id='select']"), "Second") // just as a proof of concept that you can select on anything. But don't use xpath!!
        .validateText(By.id("select"), "2") // validateText() will actually return the value="" attr of a dropdown, so that's why 2 works but "Second" will not.

        .selectOptionByValue(By.cssSelector("select#select"), "3")
        .validateText(props.get("select"), "3")

        // frames
        .switchToFrame("frame") // the id="frame"
        .validatePresent(By.cssSelector("div#frame_content"))

        // windows
        .switchToWindow("Getting Started with Selenium") // switch back to the test window.
        .click(By.linkText("Open a new tab / window"))
        .waitForWindow("Google") // waits for the url.  Can also be the you are expecting. :) (regex enabled too)
        .setText(By.name("q"), "google!")
        .closeWindow(); // we've closed google, and back on the getting started with selenium page.

    }
}
person ddavison    schedule 25.10.2013

Вы должны создать экземпляр WebDriver и вызывать методы экземпляра этого объекта.

Здесь показан простой пример: http://www.seleniumhq.org/docs/03_webdriver.jsp#introduction-the-selenium-webdriver-api-by-example

person Wouter    schedule 25.10.2013

Надеюсь, вы создали скрипт в webdriver.

Теперь в сценарии, записанном Selenium ide, у вас есть три метода с именами setup, testSomeName и tearDown.

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

После этого вам просто нужно запустить эту программу.

Вот пример, чтобы было понятнее:

public class p_adjcb {

    public void setUp() throws Exception {
    }

    public void testP_adjcb() throws Exception {
    }

    public void tearDown() throws Exception {
    }

    public static void main(String[] args) {
        p_adjcb obj = new p_adjcb();
        try {
            obj.setUp();
            obj.testP_adjcb();
            obj.tearDown();
        } catch (Exception ex) {
        }
    }
}

Если вы получаете какую-либо ошибку компилятора, убедитесь, что вы загрузили файл selenium-standalone-server.jar и добавили его в путь к вашему классу. Это очень простой старт. Позже вам может понадобиться использовать какой-нибудь фреймворк, например junit.

Надеюсь, поможет.

person me_digvijay    schedule 25.10.2013
comment
это плохо ... зачем вам помещать туда тесты junit, если вы даже не используете junit ... вы решаете эту задачу с помощью Java, а не jUnit, как вы должны. - person ddavison; 25.10.2013
comment
@sircapsalot: Большое спасибо. Просто удалил аннотации. - person me_digvijay; 25.10.2013
comment
ага, намного лучше :) - person ddavison; 25.10.2013