Graphene 2.0.0.Alpha4,Selenium 的 Ajax 测试扩展

    xiaoxiao2023-08-12  98

    Graphene 2.0.0.Alpha4 发布了,Graphene 项目的目的是使用类型安全的 API 进行 Ajax 测试,是 Selenium 项目的扩展。

    该版本值得关注的改进有:

    Highlighted Changes

    Guard Improvements and FixesRequest Guards were polished, extended and hardened. (read more)

    Creating Page Fragments ProgramaticallyPage Fragments can now be instantiated not only using dependency injection, but also programatically. (read more)

    PhantomJS SupportYou can now fully leverage awesomness of headless testing with PhantomJS.

    Guarding Programatically Retrieved ElementsElements retrieved programatically using WebElement#findElement(...) or WebElement#findElements(...) are now guarded against StaleElementReferenceException.

    Automatic Inference of LocatorsYou no longer need to define a locator in simple forms – you can leverage their automatic inference from a injection point name. (read more)

    Dependency Injection of SessionStorage and LocalStorageThese resources are now exposed directly via @ArquillianResource.

    Dependency Injection of Selenium Resource Parametrized by WebElementSelenium resources which takes WebElement as an argument in a constructor (e.g. Select) can be injected using FindBy.

    Support for FindBys and FindBy(How, String)

    Improved Integration with DroneDrone 1.2.0.Alpha2’s new Enhancer API allow us to integrate with Drone seamlessly.

    Deprecations

    Deprecation of Old Variant of Waiting Fluent APIGraphene.element(...) and Graphene.attribute(...) are now deprecated and they will be removed in an upcoming releases.

    Deprecated guardXhr replaced by guardAjaxNot all of us are familiar with abbreviation XHR (XMLHttpRequest). In order to make the API more clear for most of Graphene users, we have deprecated guardXhr and replaced it with guardAjax. guardXhr will be removed in upcoming releases.

    Guard Improvements and Fixes

    waitForHttpWhen an Ajax request is followed by a relocation (HTTP request), guardXhr or guardHttp can’t deterministically wait for an end of a request – in these situations you can use waitForHttp instead.

    Testing delayed requestsGuards now waits for a given time interval for a request to start and once the request is started, they wait the another interval for the request to finish.

    Bug FixesGuards had problems on Android with deterministic waiting for HTTP requests.

    Creating Page Fragments Programatically

    Till this release, the only option to create a page fragment was injecting it:

    @FindBy(...) MyComponent component;

    With Alpha4 we have added the possibility to create a page fragment programatically:

    public T getContent(Class clazz) { return PageFragmentEnricher.createPageFragment(clazz, root); } @Test public void testTabPanelSwitching() { Panel tab3 = tabPanel.switchTo(2); ContentOfTab content = tab3.getContent(ContentOfTab.class); assertEquals("The tab panel was not switched to third tab correctly!", "Content of the tab 3", content.text.getText()); Panel tab1 = tabPanel.switchTo(0); content = tab1.getContent(ContentOfTab.class); assertEquals("The tab panel was not switched to first tab correctly!", "Content of the tab 1", content.text.getText()); }

    You can find reference usage in this functional test together with an implementation of #getContent(Class).

    Automatic Inference of Locators

    How many times you have written:

    // look for input with a name 'firstname' @FindBy(name = "firstname") private WebElement firstname;

    You can now simplify your tests to just

    @FindBy private WebElement firstname;

    Graphene will automatically use the strategy How.ID_OR_NAME to locate the element by its ID or name.

    Since this mechanism uses the strategy pattern, you can overwrite the default strategy for your test suite and therefore find elements by e.g. their class names or even JSF component IDs.

    Roadmap

    This release is a maintanance release on the way to Beta1.

    What is Arquillian?

    Arquillian is open source software that empowers you to test JVM-based applications more effectively. Created to defend the software galaxy from bugs, Arquillian brings your test to the runtime so you can focus on testing your application's behavior rather than managing the runtime. Using Arquillian, you can develop a comprehensive suite of tests from the convenience of your IDE and run them in any IDE, build tool or continuous integration environment.

    Release details

    Published artifacts org.jboss.arquillian.graphene

    org.jboss.arquillian.graphene » graphene-build-resources jar pomorg.jboss.arquillian.graphene » graphene-component-api jar pomorg.jboss.arquillian.graphene » graphene-selenium-api jar pomorg.jboss.arquillian.graphene » graphene-selenium-drone jar pomorg.jboss.arquillian.graphene » graphene-selenium-ftest-junit-container jar pomorg.jboss.arquillian.graphene » graphene-selenium-ftest-junit-standalone jar pomorg.jboss.arquillian.graphene » graphene-selenium-ftest-testng-container jar pomorg.jboss.arquillian.graphene » graphene-selenium-ftest-testng-standalone jar pomorg.jboss.arquillian.graphene » graphene-selenium-impl jar pomorg.jboss.arquillian.graphene » graphene-webdriver-ftest jar pomorg.jboss.arquillian.graphene » graphene-webdriver-impl jar pomorg.jboss.arquillian.graphene » graphene-webdriver-spi jar pom

    Release notes and resolved issues 20

    Q1/13: PhantomJS

    Bug

    ARQGRA-257 - Guards are not working with AndroidDriverARQGRA-262 - Element click with HTTP guard causes WebDriverException: ReferenceError: Graphene is not definedARQGRA-266 - Waiting for presence of element defined by jQuery selector sometimes causes "IllegalStateException: JQueryPageExtension can't be installed"ARQGRA-272 - Introduced waitForHttp (guardXhr does not work for redirected pages)ARQGRA-274 - The request guard does timeout for delayed requestsARQGRA-289 - JavaScript interfaces fails on Chrome and PhantomJSARQGRA-290 - testAttributeIsPresent fails on Chrome and PhantomJS

    Enhancement

    ARQGRA-199 - Provide a way to create Page Fragments dynamicallyARQGRA-235 - Automatically infer ID locator from field name annotated just by @FindByARQGRA-250 - Shortcut for waiting on element's attribute value

    Feature Request

    ARQGRA-220 - Locating elements with @FindBy(how = How.ID, using = "foobar") not workingARQGRA-247 - Add support for enriching @FindBys annotationsARQGRA-254 - Expose LocalStorage and SessionStorage enrichments directlyARQGRA-258 - Provide injecting classes requiring WebElement in their constructors via @FindBy annotationARQGRA-259 - Provide timeout setting in fluent APIARQGRA-273 - Intercept WebDriver to return proxies in findElement()/findElements() methods

    Story

    ARQGRA-286 - Support PhantomJSDriver in Graphene

    Task

    ARQGRA-168 - Create QUnit tests for Graphene.Page.RequestGuard.jsARQGRA-284 - Rename guardXhr to guardAjaxARQGRA-287 - Deprecate Graphene.element and attribute methods 相关资源:primefaces-selenium:PrimeFaces对Selenium的测试支持-源码
    最新回复(0)