itljl 发表于 2012-2-20 20:00:43

关于网页点击的讨论。[已解决]

本帖最后由 itljl 于 2012-2-26 13:12 编辑

#include<IE.au3>
$oIE = _IECreate("http://www.sogou.com/",0,1,1,1 )
_IELoadWait ($oIE)
$Input = _IEGetObjById ($oIE, "query")
    If IsObj($Input) Then $Input.value = "中国人"
$submit =_IEGetObjByName ($oIE, "stb")
    If IsObj($submit) Then $submit.click

对于这个搜索按钮,有NAME stb
而对于http://2345.com/ 这个"搜索"按钮,没有ID,没有NAME,大家说说能怎么点击呢?

jtw 发表于 2012-2-20 20:40:06

直接提交表单就可以,多看看帮助!!!!!!!!!!!#include <IE.au3>

$oIE =_IECreate("http://2345.com",0,1,1,1 )
_IELoadWait($oIE)
$o_form = _IEFormGetObjByName($oIE, "bdfm") ;找到表单
$UserName = _IEGetObjById ($oIE, "word")
$UserName.value = "搜索内容"
_IEFormSubmit($o_form);提交表单

itljl 发表于 2012-2-20 21:41:29

多谢楼上的朋友,我开始也试过这种办法,只是不完美,我想知道别的办法。
如正常的点击是不被弹窗阻止的,这种提交这会被弹窗拦截给阻止了。

papapa314 发表于 2012-2-20 22:38:12

本帖最后由 papapa314 于 2012-2-20 22:40 编辑

回复 3# itljl


抱歉,这种方法也被弹窗拦截了

#include<IE.au3>

$oIE=_IECreate("http://2345.com/",0,1,1)

$tags=_IETagNameGetCollection($oIE,"INPUT")

For $tag In $tags
        If $tag.className=="sbutton" Then
                $tag.value="ddd"
                $tag.fireevent("onclick")
                ;$tag.fireevent("onkeypress")
                ;$tag.fireevent("onkeyup")
                ExitLoop
        EndIf
Next

试着用controlclick或者内嵌ie窗口吧。如若还不行,只能改网页的源码了,让按钮按下后在当前页打开新网页

itljl 发表于 2012-2-20 23:25:45

回复 4# papapa314

谢谢,可能这些网页是估计这样写的不让点击的。

lixiaolong 发表于 2012-2-20 23:56:42

回复 5# itljl

这样行不行?

*因为输入了内容焦点就是搜索按钮,所以直接给IE发送Enter就可以打开了.
#include <IE.au3>

$oIE =_IECreate("http://2345.com",0,1,1,1 )
_IELoadWait($oIE)
$o_form = _IEFormGetObjByName($oIE, "bdfm") ;找到表单
$UserName = _IEGetObjById ($oIE, "search1")
$UserName.value = "搜索内容"
ControlSend("", "", "Internet Explorer_Server1","{ENTER}")

ppsfxn 发表于 2012-2-21 09:24:01

用这种方法可以获取到按钮,但是点击用.click和_IEAction都没有达到点击的效果,求解#include <IE.au3>
$oIE = _IECreate("http://2345.com/", 0, 1, 1, 0)
$oForm = _IEFormGetObjByName($oIE,"bdfm")

$search = _IEGetObjById($oIE,"search1")
If IsObj($search) Then
        _IEFormElementSetValue($search,"abc")
EndIf

$btn = _IEFormElementGetCollection($oForm,3)
If IsObj($btn) Then
        ;_IEAction($btn,"click")
        $btn.click
EndIf

lixiaolong 发表于 2012-2-21 14:48:40

另一种方法.
#include <IE.au3>

$oIE = _IECreate("http://2345.com", 0, 1, 1, 1)
_IELoadWait($oIE)
;~ WinSetState("", "", @SW_MAXIMIZE); 窗口最大化
$UserName = _IEGetObjById($oIE, "search1")
$UserName.value = "搜索内容"

$mpos = MouseGetPos()
$pos = WinGetPos("")

If WinGetState("") = 47 Then
        MouseClick("left", $pos + 700, $pos + 278, 1, 0)
Else
        MouseClick("left", $pos + 523, $pos + 274, 1, 0)
EndIf
MouseMove($mpos, $mpos, 0); 鼠标回到原位

itljl 发表于 2012-2-21 16:28:35

本帖最后由 itljl 于 2012-2-21 16:46 编辑

回复 8# lixiaolong


    谢谢大家,经过大家的讨论,我发现就是这样没有ID,没有NAME的按钮,只能用提交表单,模拟鼠标点击等方法了。

kood481748 发表于 2012-2-25 22:00:55

回复 3# itljl

原来楼主是想做一个作蔽程序啊
被弹窗拦截阻止的很容易解决啊,把那个网址添加到允许弹窗的网站列表中就可以了,没有ID的表单按纽也可以点击的,通过表单元素就可以了

xx44t10 发表于 2012-4-17 22:28:37

回复 1# itljl


    楼主啊。看下我写的2345刷分程序源码你就明白 了~!

coolybin 发表于 2012-4-18 09:11:06

只看的一点懂。哎。

h012031 发表于 2012-8-19 20:30:51

扣了下载不了

ak47gglllk 发表于 2014-2-17 09:55:31

感谢,感谢。学习了

damoo 发表于 2014-4-8 14:09:11

很有价值的代码,正在找这个东东,谢谢分享。
页: [1]
查看完整版本: 关于网页点击的讨论。[已解决]