社区
网络编程
帖子详情
怎样找到这个登录按钮?
sgrwetrwertwetrwetrw
2006-07-07 08:27:18
我在MFC中用Microsoft Web浏览器加载了网易的网页。我想要程序找到这个登录按钮元素,<input type="submit" value="登录" />,并点击它。
pobjAllElement->item(COleVariant(strName),COleVariant((long)0),&pDisp);
这句代码只能通过ID 或 NAME 来找到元素吧。但是我现在想找到一个按钮。只能通过按钮的type和value来找,应该怎样找到这个按钮啊?
...全文
262
8
打赏
收藏
怎样找到这个登录按钮?
我在MFC中用Microsoft Web浏览器加载了网易的网页。我想要程序找到这个登录按钮元素,,并点击它。 pobjAllElement->item(COleVariant(strName),COleVariant((long)0),&pDisp); 这句代码只能通过ID 或 NAME 来找到元素吧。但是我现在想找到一个按钮。只能通过按钮的type和value来找,应该怎样找到这个按钮啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sgrwetrwertwetrwetrw
2006-07-12
打赏
举报
回复
lhwnd=(HWND)m_ie.GetHwnd() 这样可以得到IE控件的句柄吗?
模拟点击登录按钮是不是只要
SendMessage(lhwnd, WM_LBUTTONDOWN, 0,0)
SendMessage(lhwnd, WM_LBUTTONUP, 0,0) 就可以了?但是怎么得到登录按钮的x,y,好点击那里呢?
我想得到按钮上的“登陆”文字,请问这样写对吗?为什么总是报 “应用程序错误”?
IHTMLElement * pElem = NULL;
//LPDISPATCH pDispatch;
IDispatch * pDispatch=NULL;
IHTMLDocument2 * pDoc=NULL;
IHTMLElementCollection * pAllElem = NULL;
VARIANT name;
BSTR tag; //for Element's tagName
// long p; //for IHTMLElementCollection's item number
pDispatch=m_ie.GetDocument();
//ASSERT(pDispatch);
HRESULT hr=pDispatch->QueryInterface(IID_IHTMLDocument2,(void**)&pDoc);
pDoc->get_all(&pAllElem);
// ASSERT(pAllElem);
if(pAllElem!=NULL)
{
name.vt = VT_I4;
//AfxMessageBox("gethere1");
for(int i=0;i<100;i++)//遍历所有元素
{
name.lVal = i;
pAllElem->item(name,name,(IDispatch**)&pElem);//获取元素对象指针
ASSERT(pElem);///////////////////////运行出错!!!!!!!!!!!!!
pElem->get_outerText(&tag);//获取tagName
CString ss(tag); //转化成CString
if(ss.CompareNoCase("登录") ==0)//比较是否为table
AfxMessageBox(ss); //在对话框中显示tagName
::SysFreeString(tag);
}
wglacier
2006-07-12
打赏
举报
回复
tagName就是Input、DIV之类的名字,按钮上的“登陆”等文字可以通过get_InnerText或者get_OuterText得到。put_onclick是更改页面代码里onclick函数的代码,不是模拟点击。你可以或者该按钮的位置,然后向IE控件发送鼠标消息。
sgrwetrwertwetrwetrw
2006-07-11
打赏
举报
回复
pElem->get_tagName(&tag)这一句是得到元素的 NAME 吧? 但是我根本不知道登录按钮的NAME是什么,怎么在程序中判断得到是登录按钮的 NAME 呢?找到登录按钮以后是不是 pElem->put_onclick 这样模拟点击它? 我把程序中的if(ss.CompareNoCase("Input") ==0) 这一句去掉以后弹出了很多个对话框,但是对话框里面显示的全是乱码,怎么会这样呢?
wglacier
2006-07-08
打赏
举报
回复
不好意思,确实有点儿眼花,居然没看到 “name.lVal = i;”
可能是因为你只赋值了,没有指定类型。
循环前 执行一下:
name.vt = VT_I4;
试试
wglacier
2006-07-08
打赏
举报
回复
另外,在COM里,使用 QueryInterface 获取的指针用完了别忘了 Release
wglacier
2006-07-08
打赏
举报
回复
1、IHTMLElementCollection 调用 get_length可以获取元素的个数,不要硬编码指定100。
2、pAllElem->item(name,name,(IDispatch**)&pElem);//获取元素对象指针
不知是我眼花还是你忘了贴,我没看到你的name这个变量什么时候赋的值,可能这就是你的那句运行出错的原因。你可以从0到itemCount遍历,获取每个元素的指针。
多看看MSDN,IHTMLElementCollection说的还是比较清楚的。
sgrwetrwertwetrwetrw
2006-07-07
打赏
举报
回复
我想要程序找到这个登录按钮元素,<input type="submit" value="登录" />,并点击它,请高手帮我改改这段代码
IHTMLElement * pElem = NULL;
//LPDISPATCH pDispatch;
IDispatch * pDispatch=NULL;
IHTMLDocument2 * pDoc=NULL;
IHTMLElementCollection * pAllElem = NULL;
VARIANT name;
BSTR tag; //for Element's tagName
// long p; //for IHTMLElementCollection's item number
pDispatch=m_ie.GetDocument();
ASSERT(pDispatch);
HRESULT hr=pDispatch->QueryInterface(IID_IHTMLDocument2,(void**)&pDoc);
pDoc->get_all(&pAllElem);
ASSERT(pAllElem);
if(pAllElem!=NULL)
{
//AfxMessageBox("gethere1");
for(int i=0;i<100;i++)//遍历所有元素
{
name.lVal = i;
pAllElem->item(name,name,(IDispatch**)&pElem);//获取元素对象指针
ASSERT(pElem);///////////////////////运行出错!!!!!!!!!!!!!
pElem->get_tagName(&tag);//获取tagName
CString ss(tag); //转化成CString
if(ss.CompareNoCase("Input") ==0)//比较是否为table
AfxMessageBox(ss); //在对话框中显示tagName
::SysFreeString(tag);
}
}
wglacier
2006-07-07
打赏
举报
回复
循环获取所有元素指针,调用元素指针的get_tagName方法,如果是“Input”,然后再检查 "innerText"属性
自己搭的Wordpress站点退出
登录
后无法
找到
登录
按钮
本文介绍了一种简单的方法来解决WordPress站点退出
登录
后无法显示
登录
界面的问题。通过在站点URL后添加特定路径即可轻松访问
登录
页面。
vue+element使用表单进行
登录
鼠标点击
按钮
/回车
按钮
进行
登录
本文介绍了如何在Vue+ElementUI的项目中实现表单
登录
功能,包括通过点击
按钮
和按回车键两种方式触发
登录
操作。在尝试了多种方法后,最终
找到
了一种有效解决
登录
问题的方案。
模拟点击网页中的
按钮
这段代码实现了模拟点击网页中“
登录
”
按钮
的功能。通过遍历IE浏览器窗口,
找到
指定URL(http://www.sohu.com)的窗口,再遍历该网页的所有元素,
找到
值为“
登录
”的
按钮
并模拟点击。
(转)SharePoint以其他用户身份
登录
按钮
设置
在新建的SharePoint Server 2016网站集界面缺少“以其他用户身份
登录
”
按钮
,给测试带来不便。可通过代码编辑添加,具体操作是
找到
welcome.ascx文件,添加特定代码到该文件,最后刷新网站即可显示该
按钮
。
vba html网页自动
登录
,Delphi WebBrowser完成网页自动
登录
本文介绍如何在Delphi中使用WebBrowser控件完成网页自动
登录
。通过分析网页,
找到
用户名、密码和
登录
按钮
的ID,然后在DocumentComplete事件中利用JS代码填充表单并触发
登录
。
网络编程
18,356
社区成员
64,165
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章