Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi Twebbrowser更改文本框的值。_Delphi_Twebbrowser - Fatal编程技术网

Delphi Twebbrowser更改文本框的值。

Delphi Twebbrowser更改文本框的值。,delphi,twebbrowser,Delphi,Twebbrowser,我在twebbrowser中更改文本框的值时遇到一些困难。我已经尝试了WebBrowser1.OleObject.Document.getElementById('verification\u control\u 0')。值:='mytext'和其他一些方法,但似乎不起作用 网站代码: <div id="verification_control_0" class="verification_control"> <div class="smalltext"> What

我在twebbrowser中更改文本框的值时遇到一些困难。我已经尝试了
WebBrowser1.OleObject.Document.getElementById('verification\u control\u 0')。值:='mytext'
和其他一些方法,但似乎不起作用

网站代码:

 <div id="verification_control_0" class="verification_control">
 <div class="smalltext">
 What are the first 3 letters of our website's name?:<br />
 <input type="text" name="register_vv[q][71]" size="30" value=""  tabindex="6"    class="input_text" />
  </div>
 </div>

我们网站名称的前三个字母是什么?:
如果您能告诉我如何更改
中的值,我将非常感激。 感谢阅读和所有回复。

您的getElementById('verification\u control\u 0')将获得DIV元素,该元素没有“value”

您的文本框没有ID。对于测试,请将“name”属性更改为“ID”,如下所示

<input type="text" id="register_vv[q][71]" size="30" value=""  tabindex="6" class="input_text" />
WebBrowser1.OleObject.Document.getElementById('register_vv[q][71]').value := 'mytext';
试试这个:

procedure TForm1.Button1Click(Sender: TObject);
var
  col: IHTMLElementCollection;
  el: IHTMLInputElement;
begin
  col := (WebBrowser1.Document as IHTMLDocument3).getElementsByName('register_vv[q][71]');
  if col.length <> 0 then
  begin
    el := col.item(0, 0) as IHTMLInputElement;
    el.value := 'mytext';
  end;
end;
使用
getElementsByName
集合通过
NAME
来定位元素应该是首选解决方案


编辑: @SertacAkyuz的第一个评论:

WebBrowser1.OleObject.Document.getElementByID('register_vv[q][71]').Value:='tes‌​t';

我很确定OP没有测试您的代码(默认情况下应该可以工作,除非OP明确更改IE浏览模式),而是使用了
getElementByID('verification\u control\u 0')
——这是一个
DIV
元素,不支持方法
值。(因此出现错误消息“自动化对象不支持方法‘值’”
)。

WebBrowser1.OleObject.Document.getElementByID('register_vv[q][71])。值:='test'似乎起作用了,不?不,它不起作用。我收到一条错误消息“自动化对象不支持方法‘值’”。奇怪的是,我从一个测试应用程序(XE2-ie8-w7)复制粘贴了这一行。您使用的是什么版本?如果您的问题是针对我的,我使用的是delphi 2009。问题是该网站不属于我。通常,如果它有一个id,那么通过它的id获取一个值是没有问题的。我希望delphi不仅仅局限于getelementbyid.+1(已经),感谢您为我澄清了一些困惑。
WebBrowser1.OleObject.Document.getElementByID('register_vv[q][71]').Value:='tes‌​t';