使用WebDriver测试Flash

在网上看到一篇介绍如何使用WebDriver测试Flash的文章

http://learnseleniumautomation.blogspot.com/2011/12/driving-flex-application-via-selenium-2.html

Flex应用需要使用ActionScript extension编译。没有测试过。如果以后需要,可以借鉴一下。

import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;

public class FlexWebDriver {
    private final WebDriver webDriver;
   private final String flashObjectId;

    public FlexWebDriver(final WebDriver webDriver, final String flashObjectId) {
        this.webDriver = webDriver;
        this.flashObjectId = flashObjectId;
    }

    public String click(final String objectId, final String optionalButtonLabel) {
        return call("doFlexClick", objectId, optionalButtonLabel);
   }

    public String click(final String objectId) {
         return click(objectId, "");
    }

//... Omitted for clarity ...

    private String call(final String functionName, final String... args) {
      final Object result =
            ((JavascriptExecutor)webDriver).executeScript(
                 makeJsFunction(functionName, args),
                 new Object[0]);

         return result != null ? result.toString() : null;
    }

    private String makeJsFunction(final String functionName, final String... args) {
         final StringBuffer functionArgs = new StringBuffer();

        if (args.length > 0) {
            for (int i = 0; i < args.length; i++) {
                if (i > 0) {
                    functionArgs.append(",");
            }
                functionArgs.append(String.format("'%1$s'", args[i]));
         }
        }
        return String.format(
            "return document.%1$s.%2$s(%3$s);",
            flashObjectId,
            functionName,
            functionArgs);
    }
}

猜你喜欢

转载自shijunjuan.iteye.com/blog/1678754