51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3208|回复: 10
打印 上一主题 下一主题

关于selenium webdriver监听用户行为的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2015-12-24 10:09:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
曾经的selenium ide通过ff 插件可以录制用户的行为。而今selenium webdriver的listener只做到监听本身程序发送命令的过程。起初觉得selenium能启动浏览器,所以有种想法能通过此会话监听到用户的点击,但事实上对用户一切行为无法捕捉。有没有人有办法用selenium或者用别的开源软件做到可编程式的捕捉用户在页面上点击的各种行为或者事件
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

来自 5#
 楼主| 发表于 2015-12-24 14:59:55 | 只看该作者
附老外提出相似的问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-6 17:37
  • 签到天数: 1137 天

    连续签到: 1 天

    [LV.10]测试总司令

    2#
    发表于 2015-12-24 13:34:01 | 只看该作者
    开源框架就是要你自己去写脚本/程序/甚至搞成型自动化工具去实现DIY要求,所以,开始自己写起来吧~

    评分

    参与人数 1测试积点 +10 收起 理由
    lsekfe + 10 恭喜您获得测试积点10

    查看全部评分

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2015-12-24 13:56:50 | 只看该作者
    这是捕捉程序发出命令的监听
    public class EventHandler implements WebDriverEventListener{

            public void afterChangeValueOf(WebElement arg0, WebDriver arg1) {
                    // TODO Auto-generated method stub

                    System.out.println("inside method afterChangeValueOf on " + arg0.toString());
            }

            public void afterClickOn(WebElement arg0, WebDriver arg1) {
                    // TODO Auto-generated method stub
                    System.out.println("inside method afterClickOn on " + arg0.toString());
            }

            public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2) {
                    // TODO Auto-generated method stub
                    System.out.println("Find happened on " + arg1.toString()
                                    + " Using method " + arg0.toString());
            }

            public void afterNavigateBack(WebDriver arg0) {
                    // TODO Auto-generated method stub

                    System.out.println("Inside the after navigateback to " + arg0.getCurrentUrl());
            }

            public void afterNavigateForward(WebDriver arg0) {
                    // TODO Auto-generated method stub
                    System.out.println("Inside the afterNavigateForward to " + arg0.getCurrentUrl());
            }

            public void afterNavigateTo(String arg0, WebDriver arg1) {
                    // TODO Auto-generated method stub
                    System.out.println("Inside the afterNavigateTo to " + arg0);
            }

            public void afterScript(String arg0, WebDriver arg1) {
                    // TODO Auto-generated method stub
                    System.out.println("Inside the afterScript to, Script is " + arg0);
            }

            public void beforeChangeValueOf(WebElement arg0, WebDriver arg1) {
                    // TODO Auto-generated method stub

                    System.out.println("Inside the beforeChangeValueOf method");
            }

            public void beforeClickOn(WebElement arg0, WebDriver arg1) {
                    // TODO Auto-generated method stub
                    System.out.println("About to click on the " + arg0.toString());

            }

            public void beforeFindBy(By arg0, WebElement arg1, WebDriver arg2) {
                    // TODO Auto-generated method stub
                    System.out.println("Just before finding element " + arg1.toString());

            }

            public void beforeNavigateBack(WebDriver arg0) {
                    // TODO Auto-generated method stub
                    System.out.println("Just before beforeNavigateBack " + arg0.getCurrentUrl());

            }

            public void beforeNavigateForward(WebDriver arg0) {
                    // TODO Auto-generated method stub
                    System.out.println("Just before beforeNavigateForward " + arg0.getCurrentUrl());

            }

            public void beforeNavigateTo(String arg0, WebDriver arg1) {
                    // TODO Auto-generated method stub
                    System.out.println("Just before beforeNavigateTo " + arg0);
            }

            public void beforeScript(String arg0, WebDriver arg1) {
                    // TODO Auto-generated method stub
                    System.out.println("Just before beforeScript " + arg0);
            }

            public void onException(Throwable arg0, WebDriver arg1) {
                    // TODO Auto-generated method stub
                    System.out.println("Exception occured at " + arg0.getMessage());

            }

    }


    public class Test {

            /**
             * @param args
             * @throws MalformedURLException
             */
            public static void main(String[] args) throws MalformedURLException {
                    System.setProperty("webdriver.firefox.bin", "D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
                    WebDriver driver = new FirefoxDriver();
                    EventFiringWebDriver eventDriver = new EventFiringWebDriver(driver);
                    EventHandler handler = new EventHandler();
                    eventDriver.register(handler);
                    eventDriver.get("http://www.baidu.com/");
            }

    }



    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2015-12-24 14:22:51 | 只看该作者
    土土的豆豆 发表于 2015-12-24 13:34
    开源框架就是要你自己去写脚本/程序/甚至搞成型自动化工具去实现DIY要求,所以,开始自己写起来吧~

    是的,我现在要的是有个代理模式的框架。所以我想找个能绕过浏览器那种沙箱安全机制的代理框架,不是那种需要用浏览器本身插件嵌进去的那种(比如selenium ide 需要装firefox插件)。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2015-12-29 09:08:10 | 只看该作者
    这帖就这样搁浅了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-3-24 10:04
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]测试营长

    7#
    发表于 2015-12-29 09:23:16 | 只看该作者
    kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-3-16 21:26
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2016-1-9 18:49:05 | 只看该作者
    封天禁 发表于 2015-12-24 14:22
    是的,我现在要的是有个代理模式的框架。所以我想找个能绕过浏览器那种沙箱安全机制的代理框架,不是那种 ...

    seleniumIDE的录制功能(抓鼠标键盘事件),seleniumRC的代理绕过沙箱机制,webdriver的API,三者你结合起来就可以做到你的录制工具了。不过说的轻松,看懂源码就要耗费大量的精力。
    我一直觉得公司内部做录制工具投入产出比有点不划算,反而你多培训下员工写写自动化脚本就上手快多了,毕竟又不需要他们写框架,简单脚本还是可以速成的。

    我倒是基于火狐做过类似QTP的抓取对象的对象库管理工具,当然我是改了firefoxdriver驱动。你用代理的话可以试试把seleniumIDE的js全注入咯,然后抓取鼠标点击元素和键盘事件应该就好了,不是一个小工程,慎重,哈哈。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2016-2-3 08:42:50 | 只看该作者
    zzhengjian 发表于 2016-1-9 18:49
    seleniumIDE的录制功能(抓鼠标键盘事件),seleniumRC的代理绕过沙箱机制,webdriver的API,三者你结合 ...

    其实也不是划算不划算的问题了。。。我们的自动化针对selenium已经做了个可配置的,不用写脚本的界面系统。而今剩下录制这个功能,因为浏览器的沙箱隔离机制,导致到现在也就看到firefox这种开源浏览器才可被selenium嵌入。而类似IE这种浏览器,微软基本不太可能开放源码,就连qtp也是对IE做了一堆本地嵌入的dll。事实上,selenium 的核心现在也好像没更新了,在想这个框架是不是被终止在selenium 2版本了。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-27 08:32 , Processed in 0.069106 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表