Geb从列表中选择一个链接

时间:2014-05-29 13:33:47

标签: groovy spock geb

我最近一直在阅读Geb的书,并试图掌握它,因为它似乎是一个伟大的工具。我觉得我到了那里,但仍然有一些我似乎无法掌握的核心概念。

举个例子,请访问网站: -  http://www.escapistmagazine.com/videos/view/zero-punctuation

现在,如果我想测试第一个列出的视频链接到正确的页面,我首先想到的是做以下事情

class ZeroPunctuationIndexPage extends Page {
    static url = "http://www.escapistmagazine.com/videos/view/zero-punctuation"
    static at = {title == "Zero Punctuation Video Gallery | The Escapist"}
    static content = {

        selectFirstVideo {$("a", 0, class: "filmstrip_video")}
        firstVideoTitle {$("i", 0, class: "filmstrip_video")}

    }
}

class ZeroPunctuationIndexSpec extends GebReportingSpec {

    def "Click the latest video and play it"(){
        given:
        to ZeroPunctuationIndexPage

        when:
        selectFirstVideo.click()

        then:
        title.endsWith(firstVideoTitle)

    }
}

基本上我想如果我选择包含视频的第一个类(filmstrip_video)然后选择其中的链接然后我可以点击它,并将链接中的视频标题与新页面标题进行比较。

再看一遍我并不感到惊讶它不起作用,但我不知道该怎么做。

如果有人能给我一个快速的解决方案,我会很感激。我没有对逃避现实的页面做任何特别的事情,我只是选择了带有视频索引的地方来尝试编写测试。

谢谢!

2 个答案:

答案 0 :(得分:1)

它没有获得链接而且它失败了,所以我修复了它并进行了双重检查。现在,它工作正常,它通过。此外,当您选择第一个元素时,您不需要显式写入0,因为默认情况下它将选择第0个元素。

class ZeroPunctuationIndexPage extends Page {
    static url = "http://www.escapistmagazine.com/videos/view/zero-punctuation"
    static at = {title == "Zero Punctuation Video Gallery | The Escapist"}
    static content = {

        selectFirstVideo {$("div.filmstrip_video").find('a')}
        firstVideoTitle {$("div.filmstrip_video").find('i')}

    }
}


class ZeroPunctuationIndexSpec extends GebReportingSpec {

        def "Click the latest video and play it"(){
            given:
            to ZeroPunctuationIndexPage

            when:
            waitFor { selectFirstVideo.click() }

            then:
            title.endsWith(firstVideoTitle.text())

        }
}

干杯!

答案 1 :(得分:0)

尝试:

title.endsWith(firstVideoTitle.text())

我在我的iPad上,所以我无法测试它,但它应该可以工作。