我在Delphi XE7(win7,Internet Explorer 9)中使用TWebBrowser
组件来填写网页中的表单。
这是HTML:
<input name="login" class="form-control" id="inputLogin" placeholder="Username" type="text">
我正在使用此代码:
WebBrowser1.OleObject.Document.getElementById('InputLogin').setAttribute('value','sometext');
它在我的电脑上工作得很好,但在其他电脑上,它给了我这个错误:
Invalid Variant Operation error.
我该如何解决这个问题?
答案 0 :(得分:1)
setAttribute
不是为value
元素设置/获取input
的首选方式。
使用IHTMLInputElement
接口访问目标输入元素的value
,例如:
uses MSHTML;
var
el: IHTMLElement;
inputElement: IHTMLInputElement;
el := (WebBrowser1.Document as IHTMLDocument3).getElementById('inputLogin');
if Assigned(el) then
if Supports(el, IID_IHTMLInputElement, inputElement) then
inputElement.value := 'sometext';
我无法重现您所获得的错误,因此如果您坚持使用setAttribute
,则可能需要尝试显式设置文档的界面,而不是访问OleObject.Document
Variant。
e.g:
el := (WebBrowser1.Document as IHTMLDocument3).getElementById('inputLogin');
if Assigned(el) then
el.setAttribute('value', 'sometext', 0);