【问题标题】:How to " Monkey Test" a website如何“猴子测试”一个网站
【发布时间】:2012-02-24 19:06:00
【问题描述】:

我正在寻找Monkey test 网站的方法。类似于浏览器插件,您可以在其中定义时间间隔和非点击区域,然后插件将在指定的时间间隔内开始在任何地方(非点击区域或 DOM 元素除外)点击(以及可能的其他操作)。

我在网上搜索过,只找到了针对 iPhone 和 Android 的此类测试。

【问题讨论】:

    标签: firefox testing google-chrome browser-plugin monkey-testing


    【解决方案1】:

    我推荐 gremlins.js,一个“用于 Web 应用和 Node.js 的猴子测试库”

    https://github.com/marmelab/gremlins.js

    免责声明:我们写的。

    【讨论】:

    • 这是一个神奇的库,但你能告诉我我是如何理解我的 mogwai 错误的吗(它只是显示 mowai fps
    • 为此,您必须使用分析工具,例如 Chrome 开发者工具。 Gremlins.js 只是揭示问题,由您来解决。
    • 我在网上寻找某个地方,以感谢这样做的人。这就像一种激情,我不知疲倦地看着我的 gremlings 一遍又一遍地工作,我的应用程序 100% 无错误地工作。
    • 看起来不错,虽然我不明白如何使用它。有没有办法从浏览器调用 Gremlin 的部落? (我想在代码本身不引入任何新内容的情况下测试 Web 应用程序,我只能从客户端(浏览器)与其交互。在这种情况下我可以使用 Gremlins 吗?
    • @FrançoisZaninotto 你有没有写过自己的 gremlin 来测试你的 web 应用程序的拖放功能部分?
    【解决方案2】:

    Selenium 允许您搜索页面中的 DOM 元素,并模拟指向特定 DOM 元素的点击或键盘事件。这与定义“非点击区域”(大概是根据 X/Y 坐标定义)不太一样,但这种方式可能更容易。

    【讨论】:

    • 快吗?我看到它确实支持录制宏,但我希望在任何可能出现的页面上都有一些完全随机的东西。它是否模拟滚动、悬停、右键单击、打字等事件?
    • 我对 Selenium 的体验有限,但从我所见,它似乎表现不错。您可以搜索 DOM 元素树,随机选择一个元素,并在其上模拟鼠标单击、双击或击键。我不确定右键单击...也许其他人知道?
    • Selenium 只是一个框架,它允许您编写与浏览器交互的脚本。 “猴子”的随机性必须由您编写。我们编写了一个“烟雾”测试,它简单地抓取了我们页面上的所有链接,如果尚未访问过 href,则单击链接,然后继续递归,直到访问了整个站点。这个测试告诉我们,我们没有损坏的链接,但所有这些逻辑都是我们自己定制的东西,selenium 只是我们用来与网站交互的工具。
    • JesseWebb,感谢您说清楚。是的,当我说“你可以随机选择一个元素”时,我的意思是 fbernardo 必须编写自己的脚本来选择随机元素,而不是 Selenium 会为他这样做。不知道能不能模拟右键?
    • 谢谢,我正在寻找更简单的东西。我想我会打包一个快速的 Chrome 插件并将其上传到 github。我会将这个问题留待几天,希望得到其他答复。
    【解决方案3】:

    如果你想用 Python 自己动手,你可以从

    import json
    import random
    
    import selenium
    
    SUBDOMAIN = "your-domain.com/subdomain"
    d = selenium.webdriver.Firefox()
    d.get("http://" + SUBDOMAIN)
    
    while True:
        try:
            nexturl = random.choice(d.find_elements_by_tag_name("a")).get_attribute("href")
        except selenium.common.exceptions.StaleElementReferenceException:
            pass
        except IndexError:
            d.get(random.choice(SEEN))
        if nexturl and SUBDOMAIN in nexturl and nexturl not in SEEN:
            print(nexturl)
            d.get(nexturl)
            # some test code for each page
            SEEN.append(nexturl)
    

    这会启动浏览器,加载您的子域的 URL,如果仍然指向子域,则随机点击页面上的链接。在 while 循环中编写您自己的代码以进一步测试每个页面。

    【讨论】:

      猜你喜欢
      • 2014-08-09
      • 2010-11-27
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 2021-09-13
      • 2011-02-03
      相关资源
      最近更新 更多