Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   как программно нажать не кнопку, а ссылку но с передачей логина и пароля? (http://forum.oszone.net/showthread.php?t=204624)

sagepro 12-04-2011 21:31 1656795

как программно нажать не кнопку, а ссылку но с передачей логина и пароля?
 
доброго времени суток!
цель программы при запуске этой программки:
1-автоматический вход в по лоигну и паролю через веббраузер
2-переход по ссылке
3-нажатие кнопки "разъединить" (при отсутствии кнопки "разъединить" перейти к следующему пункту)
4-нажатие кнопки "соединить"
5-закрытие программки.


внизу предоставлен листинг программки собрал по кусочкам в просторах интернета (я непрограммист - я хуже новичка)
в котором есть webbrowser и 4 кнопки.
кнопка №1 открытие адреса в веббраузере.
кнопка №2 заполнение полей логином/паролем и нажатие кнопки вход НО вход непроисходит тоесть несрабатывает нажатие кнопки входа, как быть ума неприложу???????(вопрос №1)
кнопка №3 после якобы совершенного входа перехожу по ссылке
кнопка №4 нажатие кнопки "Соединить"
и самый главный (вопрос№2)- как сделать чтоб эти кнопки срабатывали сами с очередностью допустим в 5 секунд и после автоматического срабатывания последней кнопки программка закрылась сама????



unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
WebBrowser1: TWebBrowser;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
webbrowser1.Navigate('http://192.168.0.1');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
html_tag:variant;
begin
html_tag:=webbrowser1.oleobject.document.forms.item(0).elements;
for i:=0 to (html_tag.length-1) do
begin
if (html_tag.item(i).name='A1') then html_tag.item(i).value:='admin';
if (html_tag.item(i).name='A2') then html_tag.item(i).value:='admin';
if (html_tag.item(i).id='bt_submit') then html_tag.item(i).click;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
webbrowser1.Navigate('http://192.168.0.1/index.cgi?menu=w&sub=i');
end;
procedure TForm1.Button4Click(Sender: TObject);
var
i:integer;
html_tag:variant;
begin
html_tag:=webbrowser1.oleobject.document.forms.item(0).elements;
for i:=0 to (html_tag.length-1) do
begin
if (html_tag.item(i).id='uiButtonConnect') then html_tag.item(i).click;
end;
end;
end.

lxa85 13-04-2011 00:09 1656952

sagepro, в Делфи есть компонент - таймер, попробуй использовать его.

sagepro 13-04-2011 06:55 1657069

Цитата:

Цитата lxa85
sagepro, в Делфи есть компонент - таймер, попробуй использовать его. »

А как же быть с первым вопросом??

и еще меня очень сильно смущает вот эта строчка в коде:
Цитата:

Цитата sagepro
if (html_tag.item(i).id='bt_submit') then html_tag.item(i).click; »

по идее надобыло использовать тег value вместо id, но вот нету у ссылки параметра value даже если вводил его ситуация аналогичная тоесть непроисходит нажатия кнопки.


листинг к чему пытаюсь подключиться:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>DIR-320</title>
<meta name="date" content="" />
<meta name="generator" content="no generator" />
<meta name="copyright" content="Copyright (C) 2008 D-Link Russia" />
<meta name="keywords" content="DIR-320" />
<meta name="description" content="DIR-320" />
<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="content-script-type" content="text/javascript" />
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
<link rel="stylesheet" href="/scripts/login_pc_bcm.css" type="text/css" />
<script type="text/javascript" src="/scripts/common.js"></script>
<script type="text/javascript" src="/scripts/login.js"></script>
</head>
<body onload="javascript:onPageLoad();">
<div id="id_head_logo0">
<div class='fastmenu'>
<ul>
<li><a>Язык</a><ul><li><a href='index.cgi?menu=&lang=eng'>English</a><li><a href='index.cgi?menu=&lang=rus'>Русский</a></ul></li>
</ul>
</div>
</div>
<div id="id_head_logo1"></div>
<div id="id_div_messages">
</div>
<div id="id_div_main_container">
<form id="id_form_main" method="post" enctype="application/x-www-form-urlencoded" action="index.cgi">
<div id="id_div_login_header">
DIR-320
</div>
<div id="id_div_login_input">
<div id="id_div_container_login_input">
Имя пользователя:
<input id="A1" name="A1" type="text" maxlength="15" />
<br />
<br />
Пароль:
<input id="A2" name="A2" type="password" maxlength="30" />
<br />
<input id="auth" name="auth" type="hidden" value="auth" />
</div>
</div>
<div id="id_div_login_buttons">
<div id="id_div_container_buttons">
<a id="bt_reset" class="bt" href="#">
Очистить
</a>
<a id="bt_submit" class="bt" href="#">
Вход
</a>
</div>
</div>
</form>
</div>
</body>
</html>


в листинге отмечены жирным шрифтом поля которые заполняются программкой и подчеркнута ссылка которую необходимо нажать программно что у меня и НЕ выходит никак..
как решить проблему?
листинг под копирку внутри даже смайлик нарисовался)..

sagepro 15-04-2011 06:33 1658674

Может такой способ для нажатия ссылки неверный в корне?
проблем бы небыло если бы нужно было просто перейти по ссылке, но вот передача логина и пароля таким образом неосуществится(((


Время: 23:26.

Время: 23:26.
© OSzone.net 2001-