一尘不染

selenium批判

selenium

我只是想从运行Selenium(http://selenium.openqa.org)的人们那里获得一些意见,我在WaTiN上有很多经验,甚至为此编写了一个录音套件。我让它产生一些结构良好的代码,但仅由我自己维护,似乎我的公司几乎放弃了它。

如果您使用过selenium,您是否取得了很多成功?

我将使用.NET 3.5,Selenium是否可以正常使用?

代码是干净的还是仅仅是所有交互的列表?(http://blogs.conchango.com/richardgriffin/archive/2006/11/14/Testing-
Design-Pattern-for-using-
WATiR_2F00_N.aspx)

分布式测试套件的公平程度如何?

系统上的任何其他困扰或赞美将不胜感激!


阅读 253

收藏
2020-06-26

共1个答案

一尘不染

如果您正在使用Selenium IDE生成代码,则只需获取selenium将执行的每个动作的列表。对我来说,Selenium
IDE是启动或进行快速的“尝试一下”测试的好方法。但是,当您考虑可维护性和可读性更高的代码时,必须编写自己的代码。

实现良好的硒代码的一种好方法是使用页面对象模式,使代码代表您的导航流程。这是我在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);
    }
}

希望有帮助

2020-06-26