如何改写才能同样可以让COM “InternetExplorer.Application”

我有一个登入页面(http://**.com/def.php)页的表单代码范例:

<form action="abc.php" method="POST" name="f_action">
<input type="text" name="id">
<input type="password" name="pwd">
<input type="submit" value="OK" name="action">
</form>

我藉由PHP呼叫COM “InternetExplorer.Application”去填写表单并登入,代码如下:

<?php
$Browser = new COM('InternetExplorer.Application');
$Browserhandle = $Browser->HWND;
$Browser->Visible = true;
$f1_url = "http://**.com/def.php";
$Browser->Navigate($f1_url);
sleep(5);
$Browser->Document->f_action->id->focus();
$Browser->Document->f_action->id->value = "username";
$Browser->Document->f_action->pwd->focus();
$Browser->Document->f_action->pwd->value = "password";
$Browser->Document->f_action->action->focus();
$Browser->Document->f_action->action->click();
$Browser->Quit();
?>

里面是藉由Name属性找到要控制的元素,但若是我将范例页面的表单代码改成:

<form action="abc.php" method="POST">

将「name="f_action"」改成「无Name属性」,这样php代码要如何改写才能同样可以让COM “InternetExplorer.Application”填写表单并登入?

感谢!


缥缈止盈
浏览 67回答 1
1回答

开心每一天1111

你这个问题 ... 如果你都能写到这里了 ... 再继续一步应该不是什么难事 ...编程除了需要严谨 ... 有时候在遇到不知道的问题时也需要天马行空的想象力和不怕碰壁的尝试 ...<?php/*&nbsp;just&nbsp;copied&nbsp;six&nbsp;lines&nbsp;below&nbsp;...&nbsp;*/$Browser&nbsp;=&nbsp;new&nbsp;COM('InternetExplorer.Application'); $Browserhandle&nbsp;=&nbsp;$Browser->HWND; $Browser->Visible&nbsp;=&nbsp;true; $f1_url&nbsp;=&nbsp;"http://**.com/def.php"; $Browser->Navigate($f1_url); sleep(5);/*&nbsp;$allforms&nbsp;is&nbsp;NOT&nbsp;an&nbsp;array&nbsp;...&nbsp;it&nbsp;is&nbsp;an&nbsp;iterator&nbsp;...&nbsp;*/$allforms&nbsp;=&nbsp;$Browser->Document->getElementsByTagName(&nbsp;'form'&nbsp;);/*&nbsp;current()&nbsp;is&nbsp;not&nbsp;implemented&nbsp;...&nbsp;so&nbsp;we&nbsp;have&nbsp;to&nbsp;run&nbsp;a&nbsp;loop&nbsp;...&nbsp;*/foreach(&nbsp;$allforms&nbsp;as&nbsp;$theform&nbsp;)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;i&nbsp;also&nbsp;copied&nbsp;these&nbsp;six&nbsp;lines&nbsp;and&nbsp;did&nbsp;some&nbsp;text&nbsp;replace&nbsp;work&nbsp;...&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;$theform->id->focus(); &nbsp;&nbsp;&nbsp;&nbsp;$theform->id->value&nbsp;=&nbsp;"username"; &nbsp;&nbsp;&nbsp;&nbsp;$theform->pwd->focus(); &nbsp;&nbsp;&nbsp;&nbsp;$theform->pwd->value&nbsp;=&nbsp;"password"; &nbsp;&nbsp;&nbsp;&nbsp;$theform->action->focus(); &nbsp;&nbsp;&nbsp;&nbsp;$theform->action->click(); &nbsp;&nbsp;&nbsp;&nbsp; }/*&nbsp;bye&nbsp;browser&nbsp;...&nbsp;have&nbsp;a&nbsp;nice&nbsp;day&nbsp;...&nbsp;*/$Browser->Quit();事实上你可以处理网页上的所有元素 ... 都是这一个道理 ...恩恩 ... 就是这样啦 ...
打开App,查看更多内容
随时随地看视频慕课网APP