找回密码
 加入
搜索
查看: 5805|回复: 17

[IE类操作] firefox中如何操作table对象?【已解决】

  [复制链接]
发表于 2016-8-16 14:11:17 | 显示全部楼层 |阅读模式
本帖最后由 ysping 于 2016-8-18 10:12 编辑

firefox中如何点击以下网页右上角“近200期”数据,请大神不吝赐教。
http://chart.ydniu.com/trend/k3bj/


注:不是下面的图片,编辑帖子不能去掉下面的图片。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2016-8-17 00:18:01 | 显示全部楼层
JavaScript应该简单完成
 楼主| 发表于 2016-8-17 09:19:48 | 显示全部楼层
回复 2# heroxianf


    不会JS啊!能给个例子吗?
发表于 2016-8-17 11:18:30 | 显示全部楼层
回复 3# ysping


    贴出地址让大家试一下,一张图片不好调试,还是内嵌 frame。
 楼主| 发表于 2016-8-17 11:29:53 | 显示全部楼层
回复 4# nmgwddj


    是内部的地址
 楼主| 发表于 2016-8-17 11:37:07 | 显示全部楼层
回复 4# nmgwddj


    你可以以这个帖子中的网页调试一下吗?谢谢!firefox浏览器。
http://www.autoitx.com/thread-53019-1-1.html
发表于 2016-8-17 13:27:35 | 显示全部楼层
回复 6# ysping

    以下的 document 在 au3 中用就是 $oIE.document.**。

    // 得到所有页面中的 table,如果 table 有 class 或 id,则根据 class 或 id 获取,ById、ByClassName
    document.getElementsByTagName('table');
    document.getElementsById('tableId'); 对应 au3 中 _IEGetObjById 函数
    document.getElementsByClassName('tableClassName');

    // 得到的 table 对象用一个变量存储起来,调用 table 的 childNodes 属性可以得到 table 下的所有子元素
    <thead>
    <tbody>
    <tfoot>
    使用 for in 遍历 $table.childNodes 返回的对象,判断哪个对象的标签名为 tbody,如果是则保存到一个变量中。

    // 调用上面保存到变量中 tbody 对象的 childNodes 方法得到一个所有<td>的列表,同样使用 for in 遍历,遍历时判断 <td> 的 name 属性是否等于 System Monitoring,如果找到则调用该节点的 click() 方法即可点击。
    $child.getAttribute('name'); 得到某个标签的 name 属性值

    下面这个例子虽然操作的不是 table,但是逻辑是一模一样的,会调用的函数也就这么几个。足够参考,细心琢磨:http://www.autoitx.com/forum.php ... amp;fromuid=7628642
 楼主| 发表于 2016-8-17 13:30:26 | 显示全部楼层
回复 7# nmgwddj


    你这是IE浏览器,IE中我知道怎么操作。

因为某些环境只能用firefox,我想知道firefox中怎么操作?试了很多方法都不行。
 楼主| 发表于 2016-8-17 13:34:14 | 显示全部楼层
你的这个方法在firefox也可以吗?我先试试吧!
发表于 2016-8-17 13:35:35 | 显示全部楼层
回复 8# ysping


    这些对 DOM 的操作是所有浏览器都一样的,只不过在 IE 中你用 _IE 系列函数得到浏览器对象,在 Firefox 中你用 _FF 系列函数得到浏览器对象,其他后面的做法都是一样的。
 楼主| 发表于 2016-8-17 13:44:22 | 显示全部楼层
我在firefox中用模仿操作时报错:
#include <FF.au3>
#include <FFEx.au3>
_FFStart("http://chart.ydniu.com/trend/k3bj/")
Sleep(2000)
If _FFIsConnected() Then
  $domParent=_FFGetValueById('filters')
  Local $childrenNodes = $domParent.childNodes
  For $child In $childrenNodes
    If $child.getAttribute('value') == 200 Then
      $child.click()
    EndIf
  Next
endif

出现错误:
变量必须是"Object"(对象)类型
 楼主| 发表于 2016-8-17 13:46:22 | 显示全部楼层
回复 10# nmgwddj


    麻烦看一下上面的写法对吗?报错了
发表于 2016-8-17 14:31:34 | 显示全部楼层
回复 12# ysping

    这样的低级错误不应该犯的,使用函数之前应该先查一下函数的作用、参数、返回值。细心一点可以避免很多弯路。
    For In 遍历的是一个对象,而 _FFGetValueById 是返回一个 value 值,并非 Object。

   
   

    获取 Object 的方法应该是 _FFObjGet

   

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2016-8-17 14:38:35 | 显示全部楼层
本帖最后由 nmgwddj 于 2016-8-17 14:40 编辑

另外,这些都是 au3 的自定义函数,打开 FF.au3 和 IE.au3 内部,你会发现他们都是调用原生的 DOM 操作。只不过在外面包了一层壳。
所有原生 DOM 操作我昨天也发了你地址,仔细学习,别人总结下来的精华不是让我们一眼掠过的:http://www.runoob.com/htmldom/htmldom-tutorial.html
如果你仔细考虑了我回另外一篇帖子的内容,我觉得你不应该提出这样的问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2016-8-17 15:01:42 | 显示全部楼层
回复 14# nmgwddj


因为没有html、js基础,有些东西容易搞错,现在总算有点明白了。
谢谢!

评分

参与人数 1金钱 +10 收起 理由
nmgwddj + 10 加油,细心。

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-22 23:34 , Processed in 0.103420 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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