想专门学一下,觉得很多情况下还是要 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 1
@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 2
不要去找元素上绑定的 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
|