请教哪里有 selenium( Python )执行 javascript 方面的资料?

2017-11-28 12:27:22 +08:00
 jahan

想专门学一下,觉得很多情况下还是要 jsexecute_script 才能搞定的。就是没有找到比较系统的资料。? javascript 不是特别熟悉。。。大家能推荐一下吗 比如这个例子 driver.execute_script('arguments[0].click()', ele) 一直搞不清楚 arguments[0].click() 是怎么来的?怎么和要分析的网页结合起来呢?

2648 次点击
所在节点    问与答
22 条回复
p2pCoder
2017-11-28 12:44:39 +08:00
虽然 我没用过 selenium 执行 过 arguments 执行过 js,但是这个
我的理解是 是 执行 的 元素 ele 的 click 绑定的事件函数

我一般 用 execjs 这个库,执行 前端 一些 复杂的 js 加密代码

还有 如果 你 对 前端 js dom 事件等 完全不了解,理解这些还是 有难度的
jahan
2017-11-28 14:03:51 +08:00
js 一点都不懂,正在学,
也就是 arguments 是这个 ele 上绑定的动作,也就是要找到这个 js,然后就能找到这个 arguments ?
p2pCoder
2017-11-28 14:09:01 +08:00
@jahan arguments[0] 明显是 占位的,就是代表 这个 ele
你要执行的 就是 这个 ele 的 click 事件
你要 找到 这个 元素,然后看在 html 里面 有没有 绑定 click 事件
如果 没有,就继续看 这 页面 初始化过程中 有没有 给这个 ele 添加 click 事件
jahan
2017-11-28 14:13:20 +08:00
那还要请教下,怎么找绑定在 ele 上的 js 呢?
jahan
2017-11-28 14:15:51 +08:00
通过什么变量找到呢?确实 js 没什么基础。
p2pCoder
2017-11-28 14:21:13 +08:00
@jahan 这个 你还是 学 下吧,直接给你讲,也不好说,你做爬虫或者 自动化 完全 不懂 前端 也基本 不靠谱
jahan
2017-11-28 14:36:18 +08:00
看来还真要从头学。估计也就是一个 hook,就能把这两个东西连起来。
onemorecd
2017-11-28 15:20:06 +08:00
PyV8 ?
jahan
2017-11-28 15:24:42 +08:00
@onemorecd 目前处要找到 ele 上对应的 javascript 阶段,不知道有什么特征可以找到。
jahan
2017-11-28 16:47:39 +08:00
@p2pCoder 不知大神为什么说直接讲不好说,元素有 id,有 class,到 js 里面找相同的 id 和 class 就可以找到,两个东西就 hook 上了。这样理解对吧,倒是找到了,下面找点击动作。
p2pCoder
2017-11-28 16:51:04 +08:00
@jahan 理解是对的,这个是定位元素,下面就是 查找点击时间
jahan
2017-11-28 17:27:46 +08:00
@p2pCoder 点击事件一般怎么写?看到代码里面有不少的 visible 设置。没看到 click
p2pCoder
2017-11-28 17:31:38 +08:00
@jahan 看元素上 有没 onclick 属性,看 js 里面,元素 有没有 添加 onclick,或者 jquery 的 click
jahan
2017-11-28 19:51:31 +08:00
@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 是我关注的元素,
jahan
2017-11-28 20:34:48 +08:00
this._buttons.zoomOut.on("click", function(t) {
t.preventDefault(), e.model() && e.model().zoomOut()
})

难道是这句?
binux
2017-11-28 21:16:50 +08:00
不要去找元素上绑定的 js,你就点它,让浏览器执行就完了。
jahan
2017-11-28 22:15:39 +08:00
@binux 感谢指点。这个元素是个不可见的元素,click 不到啊。好多都会说要 js,不过这个 js 对我来说确实有点难度了。
iyaozhen
2017-11-28 22:38:17 +08:00
1.一般使用的话不需要执行 js,selenium 本身就够了
2.还是先学下 js 吧
3. selenium 写 case 的思路是按照用户执行的路径,找元素、点点点就行。可以不用懂 js 是怎么执行的
Lattez
2017-11-28 22:47:47 +08:00
Selenium + Phantomjs
jahan
2017-11-29 00:04:22 +08:00
@iyaozhen 现在想获取该元素的坐标(已经获取到了),然后设置焦点(这个没查到),然后点击( click?),这个怎么办呢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/410164

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX