
想专门学一下,觉得很多情况下还是要 jsexecute_script 才能搞定的。就是没有找到比较系统的资料。? Javascript 不是特别熟悉。。。大家能推荐一下吗 比如这个例子 driver.execute_script('arguments[0].click()', ele) 一直搞不清楚 arguments[0].click() 是怎么来的?怎么和要分析的网页结合起来呢?
1 p2pCoder 2017-11-28 12:44:39 +08:00 虽然 我没用过 selenium 执行 过 arguments 执行过 js,但是这个 我的理解是 是 执行 的 元素 ele 的 click 绑定的事件函数 我一般 用 execjs 这个库,执行 前端 一些 复杂的 js 加密代码 还有 如果 你 对 前端 js dom 事件等 完全不了解,理解这些还是 有难度的 |
2 jahan OP js 一点都不懂,正在学, 也就是 arguments 是这个 ele 上绑定的动作,也就是要找到这个 js,然后就能找到这个 arguments ? |
3 p2pCoder 2017-11-28 14:09:01 +08:00 @jahan arguments[0] 明显是 占位的,就是代表 这个 ele 你要执行的 就是 这个 ele 的 click 事件 你要 找到 这个 元素,然后看在 html 里面 有没有 绑定 click 事件 如果 没有,就继续看 这 页面 初始化过程中 有没有 给这个 ele 添加 click 事件 |
4 jahan OP 那还要请教下,怎么找绑定在 ele 上的 js 呢? |
5 jahan OP 通过什么变量找到呢?确实 js 没什么基础。 |
7 jahan OP 看来还真要从头学。估计也就是一个 hook,就能把这两个东西连起来。 |
8 onemorecd 2017-11-28 15:20:06 +08:00 PyV8 ? |
10 jahan OP @p2pCoder 不知大神为什么说直接讲不好说,元素有 id,有 class,到 js 里面找相同的 id 和 class 就可以找到,两个东西就 hook 上了。这样理解对吧,倒是找到了,下面找点击动作。 |
12 jahan OP @p2pCoder 点击事件一般怎么写?看到代码里面有不少的 visible 设置。没看到 click |
13 p2pCoder 2017-11-28 17:31:38 +08:00 @jahan 看元素上 有没 onclick 属性,看 js 里面,元素 有没有 添加 onclick,或者 jquery 的 click |
14 jahan OP @p2pCoder ************* }), this._buttons.moveRight.on("click", function(t) { t.preventDefault() }), this._buttons.turn.on("click", function(t) { t.preventDefault(), e.GUIResetScales() }), this._buttons.zoomOut.on("click", function(t) { t.preventDefault(), e.model() && e.model().zoomOut() }), this._buttons.zoomIn.on("click", function(t) { t.preventDefault(), e.model() && e.model().zoomIn() }), t = {}, $("body").on("keydown", function(e) { *********************** 元素上倒是没发现有什么 onclick 属性,元素包裹在 svg 里面,就一个简单的 class ;在 js 里面倒是发现了这个 click,问题是因为基础太差,不知道哪一段是个完整的句子。zoomOut.on("click",function(t))这个 zoonOut 是我关注的元素, |
15 jahan OP this._buttons.zoomOut.on("click", function(t) { t.preventDefault(), e.model() && e.model().zoomOut() }) 难道是这句? |
16 binux 2017-11-28 21:16:50 +08:00 via Android 不要去找元素上绑定的 js,你就点它,让浏览器执行就完了。 |
17 jahan OP @binux 感谢指点。这个元素是个不可见的元素,click 不到啊。好多都会说要 js,不过这个 js 对我来说确实有点难度了。 |
18 iyaozhen 2017-11-28 22:38:17 +08:00 via Android 1.一般使用的话不需要执行 js,selenium 本身就够了 2.还是先学下 js 吧 3. selenium 写 case 的思路是按照用户执行的路径,找元素、点点点就行。可以不用懂 js 是怎么执行的 |
19 Lattez 2017-11-28 22:47:47 +08:00 via Android Selenium + Phantomjs |