当前位置:  开发笔记 > 编程语言 > 正文

硒批判

如何解决《硒批判》经验,为你挑选了2个好方法。

我只是想从运行Selenium的人那里得到一些意见(http://selenium.openqa.org)我在WaTiN方面有很多经验,甚至还为它写了一套录音套件.我有它生成一些结构良好的代码,但只是由我维护,似乎我的公司几乎放弃了它.如果你已经运行了硒,你有很多成功吗?我将使用.NET 3.5,Selenium能很好地使用它吗?生成的代码是干净的还是只是所有交互的列表?(http://blogs.conchango.com/richardgriffin/archive/2006/11/14/Testing-Design-Pattern-for-using-WATiR_2F00_N.aspx)分布式测试套件的公平性如何?

任何其他抱怨或赞美系统将不胜感激!



1> marcospereir..:

如果您使用Selenium IDE生成代码,那么您只需获取selenium将执行的每个操作的列表.对我来说,Selenium IDE是一个很好的方式来开始或快速"尝试看"测试.但是,当您考虑可维护性和更易读的代码时,您必须编写自己的代码.

实现良好的selenium代码的一个好方法是使用页面对象模式,代码表示导航流.这是我在Coding Dojo Floripa(来自巴西)看到的一个很好的例子:

public class GoogleTest {

    private Selenium selenium;

    @Before
    public void setUp() throws Exception {
            selenium = new DefaultSelenium("localhost", 4444, "*firefox",
                            "http://www.google.com/webhp?hl=en");
            selenium.start();
    }

    @Test
    public void codingDojoShouldBeInFirstPageOfResults() {
            GoogleHomePage home = new GoogleHomePage(selenium);
            GoogleSearchResults searchResults = home.searchFor("coding dojo");
            String firstEntry = searchResults.getResult(0);
            assertEquals("Coding Dojo Wiki: FrontPage", firstEntry);
    }

    @After
    public void tearDown() throws Exception {
            selenium.stop();
    }

}


public class GoogleHomePage {

    private final Selenium selenium;

    public GoogleHomePage(Selenium selenium) {
            this.selenium = selenium;
            this.selenium.open("http://www.google.com/webhp?hl=en");
            if (!"Google".equals(selenium.getTitle())) {
                    throw new IllegalStateException("Not the Google Home Page");
            }
    }

    public GoogleSearchResults searchFor(String string) {
            selenium.type("q", string);
            selenium.click("btnG");
            selenium.waitForPageToLoad("5000");
            return new GoogleSearchResults(string, selenium);
    }
}

public class GoogleSearchResults {

    private final Selenium selenium;

    public GoogleSearchResults(String string, Selenium selenium) {
            this.selenium = selenium;
            if (!(string + " - Google Search").equals(selenium.getTitle())) {
                    throw new IllegalStateException(
                                    "This is not the Google Results Page");
            }
    }

    public String getResult(int i) {
            String nameXPath = "xpath=id('res')/div[1]/div[" + (i + 1) + "]/h2/a";
            return selenium.getText(nameXPath);
    }
}

希望有助于



2> Peter Bernie..:

我正在使用Selenium Remote Control来测试ASP.Net应用程序(这是我假设你也将成为目标),并且效果很好.

如果您从未使用过Selenium,请观看一些使用Selenium IDE 的截屏视频.这将让您对"Selenium"的工作原理有所了解.IDE是一个firefox插件,基本上可以让你随时开发快速记录和播放测试.对于较大的测试套件或编写真正可维护的测试,我建议使用Selenium Remote Control.(如果你刚刚开始,那么IDE非常棒.)

Selenium Remote Control允许您使用自己喜欢的语言和单元测试框架来驱动Web浏览器以执行测试.如果你对C#/ NUnit最熟悉,你可以用这种方式编写测试并使用你喜欢的所有NUnit好东西.(例如,Test-Driven.net插件).此外,由于您的测试是用高级语言编写的,因此您可以执行从特定测试类继承的操作,您可以使用它来使您的实际测试方法代码更加清晰.(或者至少就是我编写测试的方式.它让我测试复杂的场景,使我的测试方法行数保持合理的数量.)

你提到分布式测试.不幸的是,我还没有找到一种方法来使用NUnit 的Selenium Grid项目.Selenium Grid允许您在多个不同的计算机和浏览器实例上执行测试套件.因此,不是一个接一个地说出200个测试方法(即,连续地),而是在一台机器或多台机器上将负载分散到四个网格实例(即,一次在四个不同的浏览器实例中运行)上.关于你想要分配的方式.

如果你用Java或PHP编写测试,你可能会有更好的运气.我希望通过NUnit发布NUnit2.5,包括用于并行测试的pNUnit.

如果您对硒有任何疑问,请澄清您的原始问题,我将很乐意帮您解决.(Selenium只是我每天使用的那些工具之一,所以我喜欢帮助新人开始使用它..)

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有